C++虚函数无法识别

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)

Oli*_*rth 6

您需要向Point类体添加函数声明:

class Point : public Shape
{
public:
    virtual void reset();
private:
    double a,b;
};
Run Code Online (Sandbox Code Playgroud)

(这virtual是不必要的,因为它是virtual在基类中声明的.但是将它添加为提醒是有帮助的.)