첫 번째 생성자로 두 번째 생성자 실행

Mogget

XML 파일을 구문 분석하고 콘텐츠와 사용되는 메서드를 기반으로 데이터를 반환하는 클래스가 있습니다. 경로가있는 파일 이름이나 이미 열려있는 파일에 대한 포인터를 사용하여 개체를 시작할 수 있기를 원합니다.

이미 열린 파일에 대한 포인터가 주어지면 생성자를 실행하고 그게 전부입니다. 파일 이름이 전달되면 해당 생성자는 파일을 연 다음 열린 파일의 주소를 두 번째 생성자에 전달합니다.

//foo.h
class foo
{
    public:
        foo(const QString fileName);
        foo(QFile *fp);
        ...
        ...
}

//foo.cpp

class foo::foo(const QString fileName)
{
    if(fileName.isEmpty()) {
        // Return error.
    } else {
        // Open file and pass the address to the second constructor.
        fp = new QFile(fileName);
        fp->open(...);
        foo::foo(fp);   // Execute second constructor.
    }
}

class foo::foo(QFile *fp)
{
    if(fp == NULL) {
        // Return error.
    } else {
        // Do stuff with open file and further initiate the object.
    }
}

이 작업을 수행하는 방법에 대한 첫 번째 아이디어 였지만 문제가 너무 복잡하다고 생각합니다. 이 작업을 수행하는 데 적합한 방법입니까, 정상입니까? 이러한 유형의 상황에 대한 모범 사례가 있습니까?

차드

에서 C++11, 당신은 생성자 위임 도움이 될 수 있습니다.

경우 C++11옵션이 아닙니다, 무거운 리프팅을하는 개인 "초기화"기능을 가지고 각각의 생성자에서 호출하도록 코드를 리팩토링.

class foo
{
public:
    foo(const QString fileName) { /* open QFile, call load() */ }
    foo(QFile *fp) { load(fp); }
    ...
private:
    void load(QFile* fp);
};

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

생성자의 첫 번째 문장

분류에서Dev

첫 번째 행에서 두 번째 행을 빼고 mysql에서 출력 열을 생성하는 방법

분류에서Dev

Bash (한 줄) : 첫 번째 성공하면 두 번째 명령을 실행하고 실패하면 세 번째 명령을 실행합니까?

분류에서Dev

문자열을 '첫 번째'와 '두 번째'로 나누기

분류에서Dev

첫 번째, 두 번째, 세 번째 및 네 번째 이름 앞에 점 추가 (첫 글자 만)

분류에서Dev

첫 번째 파일을 폴더에 생성하고 ssh 실행

분류에서Dev

두 번째 실행시 첫 번째 함수 실행 중지 (Python)

분류에서Dev

첫 번째 실행과 두 번째 실행의 속도 차이

분류에서Dev

첫 번째 창 코드에서 생성 된 두 번째 창 닫기

분류에서Dev

.NET 첫 번째 성공 후 두 번째 ajax 호출 만들기

분류에서Dev

두 번째 요청을 첫 번째 요청으로 2 초 안에 실행

분류에서Dev

SQL-목록에서 첫 번째, 두 번째, 세 번째 경우에 대한 카운트 생성

분류에서Dev

GNOME3 / GDM 첫 번째 로그인은 실패하지만 두 번째 로그인은 성공합니다.

분류에서Dev

첫 번째 행과 열을 기반으로 셀 쌍 생성

분류에서Dev

java for loop 첫 번째 문자열의 첫 번째 문자 다음 두 번째 문자열의 마지막 문자

분류에서Dev

메소드가 두 번 실행되기 전에 주어진 메소드. 첫 번째는 null을, 두 번째는 문자열 인수를 캡처합니다.

분류에서Dev

첫 번째 열이 첫 번째 요소 인 동안 행렬을 두 번째 열로 전치하는 방법

분류에서Dev

첫 번째 열을 기준으로 두 행렬에서 두 번째 열 빼기

분류에서Dev

CSS 첫 번째 자식이 두 번째로 작동하지 않습니다.

분류에서Dev

[Python] 무작위로 생성 된 행렬에서 첫 번째, 두 번째, 세 번째 등 행의 최대 값을 가져와이 최대 값으로 벡터 생성

분류에서Dev

첫 번째 유효성 검사기가 실패하면 두 번째 유효성 검사기 실행을 중지하는 방법은 무엇입니까?

분류에서Dev

두 번째로 "JHipster-UML"생성

분류에서Dev

두 번째는 첫 번째를 기반으로하는 두 개의 mysql 쿼리를 실행합니다.

분류에서Dev

Javascript-왜 두 번째가 아닌 첫 번째 div에만 발생합니까?

분류에서Dev

어떻게 두 번째 도트 자바 후 첫 번째 문자를 찾을 수

분류에서Dev

자바에서 두 번째 단어의 첫 번째 문자를 얻는 방법

분류에서Dev

CSS On Focus 첫 번째 자식 두 번째 자식의 색상 변경?

분류에서Dev

첫 번째 자동 완성을 사용하여 두 번째 자동 완성의 값 지우기

분류에서Dev

Crystal Reports-linkedTable 값의 첫 번째, 두 번째 및 세 번째 발생 가져 오기

Related 관련 기사

  1. 1

    생성자의 첫 번째 문장

  2. 2

    첫 번째 행에서 두 번째 행을 빼고 mysql에서 출력 열을 생성하는 방법

  3. 3

    Bash (한 줄) : 첫 번째 성공하면 두 번째 명령을 실행하고 실패하면 세 번째 명령을 실행합니까?

  4. 4

    문자열을 '첫 번째'와 '두 번째'로 나누기

  5. 5

    첫 번째, 두 번째, 세 번째 및 네 번째 이름 앞에 점 추가 (첫 글자 만)

  6. 6

    첫 번째 파일을 폴더에 생성하고 ssh 실행

  7. 7

    두 번째 실행시 첫 번째 함수 실행 중지 (Python)

  8. 8

    첫 번째 실행과 두 번째 실행의 속도 차이

  9. 9

    첫 번째 창 코드에서 생성 된 두 번째 창 닫기

  10. 10

    .NET 첫 번째 성공 후 두 번째 ajax 호출 만들기

  11. 11

    두 번째 요청을 첫 번째 요청으로 2 초 안에 실행

  12. 12

    SQL-목록에서 첫 번째, 두 번째, 세 번째 경우에 대한 카운트 생성

  13. 13

    GNOME3 / GDM 첫 번째 로그인은 실패하지만 두 번째 로그인은 성공합니다.

  14. 14

    첫 번째 행과 열을 기반으로 셀 쌍 생성

  15. 15

    java for loop 첫 번째 문자열의 첫 번째 문자 다음 두 번째 문자열의 마지막 문자

  16. 16

    메소드가 두 번 실행되기 전에 주어진 메소드. 첫 번째는 null을, 두 번째는 문자열 인수를 캡처합니다.

  17. 17

    첫 번째 열이 첫 번째 요소 인 동안 행렬을 두 번째 열로 전치하는 방법

  18. 18

    첫 번째 열을 기준으로 두 행렬에서 두 번째 열 빼기

  19. 19

    CSS 첫 번째 자식이 두 번째로 작동하지 않습니다.

  20. 20

    [Python] 무작위로 생성 된 행렬에서 첫 번째, 두 번째, 세 번째 등 행의 최대 값을 가져와이 최대 값으로 벡터 생성

  21. 21

    첫 번째 유효성 검사기가 실패하면 두 번째 유효성 검사기 실행을 중지하는 방법은 무엇입니까?

  22. 22

    두 번째로 "JHipster-UML"생성

  23. 23

    두 번째는 첫 번째를 기반으로하는 두 개의 mysql 쿼리를 실행합니다.

  24. 24

    Javascript-왜 두 번째가 아닌 첫 번째 div에만 발생합니까?

  25. 25

    어떻게 두 번째 도트 자바 후 첫 번째 문자를 찾을 수

  26. 26

    자바에서 두 번째 단어의 첫 번째 문자를 얻는 방법

  27. 27

    CSS On Focus 첫 번째 자식 두 번째 자식의 색상 변경?

  28. 28

    첫 번째 자동 완성을 사용하여 두 번째 자동 완성의 값 지우기

  29. 29

    Crystal Reports-linkedTable 값의 첫 번째, 두 번째 및 세 번째 발생 가져 오기

뜨겁다태그

보관