2012-04-19 5 views
-1

C++로 코딩 된 3 개의 클래스가 있습니다. 그것들은 모두 단순하지만 컴파일러는 많은 오류를줍니다. cpp 파일과 헤더 파일의 각 클래스. 가능한 문제점은 무엇입니까? 하나는 "정의되지 않은 기본 클래스"입니다.간단한 클래스로 인해 오류가 발생합니다.

class re { 
    int i; 
    int j; 
    string a; 
    re(int,int,int); 
    ~re(); 
} 

class Pre:public re { 
    int k; 
    public: 
    Pre(int,int,int); 
    ~Pre(); 
} 

class MPre:public Pre { 
    int z; 
    public: 
     MPre(int); 
    ~Mpre(int); 
} 
+8

클래스 정의는 세미콜론 (";")으로 끝나야합니다. 실제 코드에서 세미콜론을 사용하고 있습니까? (예를 들어 사용하지 않는 경우). – mfontanini

+2

당신은 오류를 게시 할 수 있습니다, 당신이 붙여 넣은 것은 클래스 정의의 끝에서';'가 없기 때문에 가능할 수 있습니다. 그러나 나는 추측하기 어렵습니다. – EdChum

+0

세미콜론을 넣었습니다. 아직 오류가 있습니다. –

답변

2

가능한 실수 :

  • 재 클래스 생성자는 공개되지 않습니다. 이거 알고 있니?

  • MPre 생성자가 하나의 입력을 가져 오기 때문에 Pre 클래스에 대한 기본 생성자를 작성해야합니다.

  • 헤더 파일을 추가 할 때주의하십시오. 예를 들어 Pre 클래스에는 re 클래스의 헤더 파일이 필요합니다. 오류 undefined base class를 들어 클래스

+1

상속을 사용하려면 가상 소멸자가 필요합니다. – AlexTheo

+2

메모리뿐만 아니라 파일 등도 할당 된 리소스가있는 경우에도 소멸자가 필요합니다. –

0

포인터 변수를 추가하지 않으면

  • 또한,이 소멸자를 작성할 필요가 없습니다, 안 #include 파일이있는 클래스 re는 D 당신이 생각 다른 클래스가있는 파일에서 선언됩니다.

  • 0

    클래스 선언에 세미콜론이 없습니다. 또한 좋은 .cpp 파일의 모든 클래스를 분리하면 필요없는 경우를 대비하여 원치 않는 코드를 포함하지 않아도됩니다. 또한 상속의 경우에는 소멸자가 가상인지 확인하십시오. 그렇지 않으면 메모리 누수가 발생합니다.

    또한 re의 생성자는 public이 아니므로 public으로 만듭니다.

    관련 문제