C++抽象类的构造和破坏

jac*_*kie -2 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 }
}
Run Code Online (Sandbox Code Playgroud)

错误是:未完成对"middleBase :: middleBase(int param)"的引用

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

Meh*_*ari 8

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 */ }
};
Run Code Online (Sandbox Code Playgroud)