【问题标题】:Calling constructor of parent class gives undefined [closed]调用父类的构造函数给出未定义的[关闭]
【发布时间】:2013-05-22 22:28:01
【问题描述】:
Class A{
  public:  
  int variable;
  A(): variable(4) {}
};

class B : public A{

  void  function(){

    A test = new A()
  }
};

在 B 类中调用 new A 会给 A:A() 提供未定义的引用。 这个电话合法吗?

【问题讨论】:

  • Cannot reproduce.发布真实代码。
  • 这不是你的真实代码。显示真实代码(你可能忘记定义A的构造函数)
  • 您的代码甚至无法编译。一个清晰的工作示例怎么样?
  • A的构造函数是A(): variable(4) {}
  • 这是更新后的代码给出的内容。与您所描述的完全不同:coliru.stacked-crooked.com/…

标签: c++ inheritance constructor


【解决方案1】:

不——您只为A 定义了一个构造函数,它是私有的。因此,除非它是A 的朋友,否则没有任何东西可以构造A,或者您还定义(例如)A 的静态成员来创建实例。

还要注意new A(本身)没有任何用处(实际上,就目前而言,没有分号,它甚至不会编译)。 new 产生一个对象的地址——要真正使用它,您通常将该地址保存到一个指针中。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    相关资源
    最近更新 更多