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