C++ C++;抽象类的构造与破坏

C++ C++;抽象类的构造与破坏,c++,C++,错误是:未定义对“middleBase::middleBase(int参数)”的引用 这是否适用于参数化构造函数的最佳实践?c++在类定义后需要分号: class base { base () { } virtual ~base () { } } class middleBase { middleBase () { } middleBase (int param) { } ~middleBase () { } } class concrete : pu

错误是:未定义对“middleBase::middleBase(int参数)”的引用


这是否适用于参数化构造函数的最佳实践?

c++在类定义后需要分号:

class base
{
    base () { }
    virtual ~base () { }
}

class middleBase
{
    middleBase () { }
    middleBase (int param) { }
    ~middleBase () { }
}

class concrete : public middleBase
{
    concrete () { }
    concrete (int param) { // process }
    ~concrete () { // delete something }
}
class base
{
  public: // constructor should be accessible by derived class
    base () { }
    virtual ~base () { }
}; // add semicolon

class middleBase : public base // you missed the declaration
{
  public: 
    middleBase () { }
    middleBase (int param) { }
    virtual ~middleBase () { }
};

class concrete : public middleBase
{
  public:
    concrete () { }
    concrete (int param) : middleBase(param) { /* process */ }
    virtual ~concrete () { /* delete something */ }
};

如果您不在类成员函数或变量之前放置访问说明符(public /私密/保护),默认为C++类的代码>私下< /Calp>说明符。因此,

middleBase
的构造函数是私有的,不能被
concrete
类的构造函数访问,这导致了您提到的错误。

这不应该编译。请发布问题可重现的真实代码。。此代码存在多个问题,例如缺少;对于类,middleBase不是从base派生的,middleBase析构函数不是虚拟的,缺少访问说明符等。
class { … };