目前我正在开发一个GUI系统,我已经制作了一个具有这种继承结构的guibutton对象:
GUIObject
|
GUIImage
|
GUIButton
其中,guiObject是带有一些虚拟函数(render、update等)的基类。
无论如何,由于我想处理GUI系统回调的方式,guibutton是一个模板类,其中
T
具有应回调的方法的对象。
这是头文件:
#include "GUIImage.h"
template<class CallbackClass>
class GUIButton : public GUIImage
{
public:
// Constructor //
GUIButton();
// GUIObject Overides //
bool update(const GUIUpdateInfo& updateInfo);
void update();
void render(const GUIRenderInfo& renderInfo);
string getType();
// Callback //
void setCallback(void (CallbackClass::* callback)(), CallbackClass* instance);
// Destructor //
~GUIButton();
private:
void (CallbackClass::* m_callback)();
CallbackClass* m_callTo;
};
您可以看到,它们也是函数setcallback,它从回调类和要使用的特定实例中设置方法。
不管怎样,在所有这些之后,我的代码编译得很好,但是当我尝试使用新类时,我得到了以下链接错误:
Undefined symbols:
"GUIButton<GUIAppTest>::GUIButton()", referenced from:
GUIAppTest::GUIAppTest()in GUIAppTest.o
GUIAppTest::GUIAppTest()in GUIAppTest.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
我使用Xcode作为一个IDE,因此错误格式可能与正常格式略有不同。
使用类的代码如下所示:
GUIButton<GUIAppTest>* newButton = new GUIButton<GUIAppTest>();
newButton->loadImage("Data/Sketch.png", 1);
newButton->setTextureCoordinates(0.0, 0.0, 1.0, 1.0);
newButton->setLocationCoordinates(0.0, 0.0, 84, 84);
newButton->setCallback(&GUIAppTest::onClick, this);
m_objects.push_back(newButton);
问题可能很简单,但我已经在这里呆了一段时间了,所以我想我最好能得到一些帮助。使用guibutton实际上发生在guiapptest(作为模板传递给guibutton的类)的实现中,这可能是我的问题的原因吗?
我确信我的所有功能都已经实现了,所以问题不应该在那里。
如果有人能给我指点,我会非常感激的!