Chr*_*Geo 4 c++ class superclass
我有以下样式的代码:
class SubClass;
class SuperClass;
class SuperClass {
private:
void bar() {
SubClass().foo();
}
};
class SubClass : SuperClass {
public:
void foo() {};
};
Run Code Online (Sandbox Code Playgroud)
所以基本上我有一个SuperClass,我想从中调用子类的方法foo().VS 2012给了我以下错误:
错误1错误C2514:'SubClass':类没有构造函数.
错误2错误C2228:'.foo'的左边必须有class/struct/union.
我想做什么的正确结构是什么?
你不能这样做.您必须(至少)在基类中声明该方法.例如:
#include <iostream>
class SuperClass
{
public:
void bar()
{
foo();
}
private:
virtual void foo() // could be pure virtual, if you like
{
std::cout << "SuperClass::foo()" << std::endl;
}
};
class SubClass : public SuperClass // do not forget to inherit public
{
public:
virtual void foo() { std::cout << "SubClass::foo()" << std::endl; }
};
int main()
{
SuperClass* pTest = new SubClass;
pTest -> bar();
delete pTest;
}
Run Code Online (Sandbox Code Playgroud)
将打印SubClass::foo().
| 归档时间: |
|
| 查看次数: |
30504 次 |
| 最近记录: |