【发布时间】:2010-01-26 11:43:08
【问题描述】:
我在我的 C++ 应用程序中使用了两个类。代码如下:
class MyMessageBox
{
public:
void sendMessage(Message *msg, User *recvr);
Message receiveMessage();
list<Message> dataMessageList;
};
class User
{
public:
MyMessageBox *dataMsgBox;
};
msg 是指向 Message 类的派生类对象的指针。我已经实现了函数 sendMessage 如下:
void MyMessageBox::sendMessage(Message *msg, User *recvr)
{
Message &msgRef = *msg;
recvr->dataMsgBox->dataMessageList.push_back(msgRef);
}
当我编译这段代码时,我得到以下错误: 未定义对“消息的 vtable”的引用。请帮我解决这个问题。
谢谢, 拉克什。
【问题讨论】:
-
我使用的是 GCC 编译器 gcc 4
-
Message类的实现是什么?此外,由于您使用的是 std::list
,一旦您将它们 push_back 放到列表中,您的派生 Message 对象将被切片为纯 Message 对象。改为使用列表 。 -
为了让我们帮助您,您需要添加文件的所有内容。您刚刚显示的内容应该没有错误。
标签: c++ templates pointers reference libstdc++