2010-06-22 37 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 2010-06-22 14:14:31

+0

我很确定支持继承不是由IDE决定的,但它是IDE使用的编译器,它决定你将得到什么错误(并非所有的C/C++编译器创造平等)。你从哪里得到这个代码示例,以及他们告诉你在什么IDE中使用它?它应该编译好吗?你知道NetBeans和Eclipse使用的是什么编译器吗? – FrustratedWithFormsDesigner 2010-06-22 14:14:36

+0

这是gcc。谢谢。问题已经解决了。 – Ellen 2010-06-22 14:32:40

回答

1

我建议落实在B类构造函数

+0

谢谢。得到它了。 – Ellen 2010-06-22 14:30:24

4

子类不继承构造函数。你试图调用B(double,double),但是没有B(double,double)。你可以定义B(double,double),或者你可以使用C++ FAQ中的this pattern

+0

我明白了。谢谢。这有很大帮助。 – Ellen 2010-06-22 14:30:52

4

在C++中,构造函数(和析构函数)不像常规方法那样继承。你需要定义B(vector,double)。但是,您可以在初始化列表中的父构造函数上执行一种调用:

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

谢谢。这样可行。 – Ellen 2010-06-22 14:30:09