2010-06-22 2 views
2

NetBeans IDE 6.8을 사용하여 C++ 프로젝트를 만듭니다. 그러나 클래스 상속을 사용하는 동안 파생 클래스를 인식하지 못하는 것 같습니다.C++ IDE Netbeans 또는 Eclipse가 클래스 상속을 지원하지 않습니까?

class A 
{ 
public: 
    A(vector<double> a, double b) {...} 
}; 

class B : public A 
{ 
public: 
    additionalfunction(...) {...} 
}; 

main() 
{ 
    vector<double> c = something; 
    double d = 0; 
    B b=B(c, d); 
} 

그리고 컴파일러는 "B (C, D)가"선언되지 않은 것을 저에게 말한다 : 여기에 내가 가진 것입니다. 나는 Eclipse C++을 시도했다. 똑같은 말을했다. 왜 그런가요? 두 IDE가 모두 C++ 상속을 지원하지 않기 때문입니까? 어떻게해야합니까?

답장을 보내 주시면 감사하겠습니다.

+1

B에 대한 적절한 생성자를 제공하고 있습니까? (예 : 벡터와 인수를 두 번 취하는 인수) – Darel

+0

상속을 지원하는 것이 IDE에 달려 있지는 않지만 IDE가 사용하는 컴파일러가 어떤 오류를 얻을지 결정합니다 (모든 C/C++ 컴파일러가 아님). 동일하게 생성됨). 이 코드 샘플은 어디서 얻었으며, 어떤 IDE에서 사용하겠다고 했습니까? OK를 컴파일해야하나요? 컴파일러 NetBeans와 Eclipse가 사용하는 것을 알고 있습니까? – FrustratedWithFormsDesigner

+0

gcc입니다. 감사. 문제가 해결되었습니다. – Ellen

답변

4

서브 클래스가 생성자를 상속하지 않는 클래스 B의 생성자를 구현하는 게 좋을 것. B (double, double)를 호출하려고하는데 B (double, double)가 없습니다. B (double, double)를 정의하거나 C++ FAQ에서 this pattern을 사용할 수 있습니다.

+0

알겠습니다. 감사. 그것은 많은 도움이됩니다. – Ellen

4

C++에서 생성자 (및 소멸자)는 일반 메서드처럼 상속되지 않습니다. B (vector, double)를 정의해야합니다. 그러나 초기화 목록의 상위 생성자에서 일종의 호출을 수행 할 수 있습니다.

public: 
    B(vector<double> a, double b) : A(a, b){ 
     ... 
    } 
+0

감사합니다. 그거야. – Ellen

관련 문제