C++ IDE Netbeans 或 Eclipse 不支持类继承吗?
Posted
技术标签:
【中文标题】C++ IDE Netbeans 或 Eclipse 不支持类继承吗?【英文标题】:Doesn't C++ IDE Netbeans or Eclipse support class inheritance? 【发布时间】:2010-06-22 14:11:03 【问题描述】:我正在使用 NetBeans IDE 6.8 创建 C++ 项目。然而,虽然我使用类继承,但在我看来它无法识别派生类。这是我所拥有的:
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++继承?我该怎么办?
感谢任何回复。
【问题讨论】:
您是否为 B 提供了正确的构造函数? (即一个接受一个向量并作为参数加倍的。) 我很确定是否支持继承并不取决于 IDE,但 IDE 使用的编译器决定了您会遇到什么错误(并非所有 C/C++ 编译器都是一样的)。您从哪里获得此代码示例,他们告诉您在哪个 IDE 中使用它?它应该编译好吗?你知道 NetBeans 和 Eclipse 用的是什么编译器吗? 这是 gcc。谢谢。问题解决了。 【参考方案1】:子类不继承构造函数。您试图调用 B(double, double),但没有 B(double, double)。您可以定义 B(double, double),也可以使用 C++ FAQ 中的this pattern。
【讨论】:
我明白了。谢谢。这很有帮助。【参考方案2】:在 C++ 中,构造函数(和析构函数)不像常规方法那样被继承。您需要定义 B(vector, double)。但是,您可以对初始化列表中的父构造函数执行某种调用:
public:
B(vector<double> a, double b) : A(a, b)
...
【讨论】:
【参考方案3】:我建议在 B 类中实现构造函数。
【讨论】:
以上是关于C++ IDE Netbeans 或 Eclipse 不支持类继承吗?的主要内容,如果未能解决你的问题,请参考以下文章
集成 Qt 框架、Netbeans IDE、Visual Studio C++ 编译器
Eclipse CDT vs NetBeans C++ vs [重复]