我见过很多有类似问题的人,但我见过的解决方案似乎没有解决我的问题,所以希望有人可以看到我的问题并解释如何解决它或者至少指示我某处可以解释它。
这是我的代码(至少是破坏的部分):
A.H
#ifndef A_H
#define A_H
enum myEnum {SOMEVALUE, OTHERVALUE};
class C;
class A
{
public:
virtual enum myEnum foo(C* c) = 0;
};
#endif // A_H
B.h
#include "A.h"
#ifndef B_H
#define B_H
class RuleConway : public A
{
public:
enum myEnum foo(C* c);
};
#endif // B_H
B.cpp
#include "B.h"
#include "C.h"
enum myEnum foo(C* c)
{
// do things
return SOMEVALUE;
}
当我尝试编译我的项目时,我明白了:
未定义引用'vtable for B'
有谁知道我为什么会收到此错误或如何修复错误?
答案 0 :(得分:3)
您必须在B.cpp中将该函数实现为enum myEnum RuleConway::foo(C* c)
。你现在的方式就是在B.cpp中定义一个名为foo
的函数,而不是B
的成员函数。
答案 1 :(得分:0)
在B.cpp
你应该做
enum myEnum RuleConway::foo(C* c)