未定义的vtable参考

pam*_*eho 1 c++ inheritance abstract-class class

我已经开始学习C++,我已经知道C和Java了.我开始学习它因为我想开始使用面向对象的编程.

但是,由于编译器生成"对于Vtable for Actor"的未定义引用,因此我无法使用代码.在这里你有代码产生相同的错误,而不是原始的错误,因为它不太清楚.我真的不知道是什么原因造成的.

struct Actor
{
     int x, y;
     virtual void move();
};

struct Player : Actor
{
     Player(int a, int b)
     {
        x = a;
        y = b;
     }

     void move();
     void draw();
};

void Player::move()
{
    ++x;
};

main()
{
    Actor *act;

    act = new Player(10, 20);
}
Run Code Online (Sandbox Code Playgroud)

这个问题可能是愚蠢的,我不知道,我到处挖,但没有发现什么可以解决我的问题.

Mak*_*zin 8

您需要创建virtual void move();一个纯虚函数:

virtual void move() = 0;
Run Code Online (Sandbox Code Playgroud)

或定义Actor::move()基类

void Actor::move() 
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)