以下代码会产生链接器错误
//baseClass.h
class baseClass
{
virtual void update(InputManager& input);
}
//baseClass.cpp
//defines update
//derivedClass.h
class derivedClass : public baseClass
{
void update(InputManager& input);
}
//derivedClass.cpp
//defines update
错误:
Undefined symbols for architecture x86_64:
"derivedClass::derivedClass(float, float)", referenced from:
_main in main.o
但是下面的代码编译得很好:
//baseClass.h
class baseClass
{
virtual void update(InputManager& input);
}
//baseClass.cpp
//defines update
//derivedClass.h
class derivedClass : public baseClass
{
void update(InputManager& input){}
}
这是为什么?为什么我不能在类定义之外定义derivedClass的更新函数?
答案 0 :(得分:0)
我从你的解释中理解的是你没有提供功能体void update(InputManager& input);
在派生类中。你必须提供身体,因为你重写了它,在被覆盖的函数体中做一些事情。
正如您提供的第二个代码剪切它正在编译正常,因为您提供了函数体(至少为空,它不能为空,但对于编译器,它可以)。