【问题标题】:Doesn't C++ IDE Netbeans or Eclipse support class inheritance?C++ IDE Netbeans 或 Eclipse 不支持类继承吗?
【发布时间】: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。谢谢。问题解决了。

标签: c++ class inheritance ide


【解决方案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 类中实现构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多