0 c++ virtual overriding class
我正在使用CodeBlocks,我有以下代码,无法编译.
(这是关于一些C++陷阱所以我唯一要问的是为什么它不能编译)
代码如下:
#include <iostream>
using namespace std;
class Shape
{
public:
Shape();
virtual void reset();
private:
int color;
};
class Point : public Shape
{
private:
double a,b;
};
void Shape::reset()
{
cout<<"Shape reset\n";
}
void Point::reset()
{
Shape::reset();
cout<<"Point reset";
}
Shape::Shape()
{
reset();
}
int main()
{
Shape s;
Point o;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
no `void Point::reset()' member function declared in class `Point'
Run Code Online (Sandbox Code Playgroud)
您需要向Point类体添加函数声明:
class Point : public Shape
{
public:
virtual void reset();
private:
double a,b;
};
Run Code Online (Sandbox Code Playgroud)
(这virtual是不必要的,因为它是virtual在基类中声明的.但是将它添加为提醒是有帮助的.)