我已将我的一个旧项目(在 VS-2010 中构建)中的头文件和 cpp 文件复制到新项目中(在 QT5.1 中开发它)并遇到了这个奇怪的错误
1>Message_list.obj : error LNK2019: unresolved external symbol "public: bool __thiscall Message_list::NoMessageTime::operator()(struct Message const &,struct Message const &)const " (??RNoMessageTime@Message_list@@QBE_NABUMessage@@0@Z) referenced in function "bool __cdecl std::_Debug_lt_pred<class Message_list::NoMessageTime,struct Message,struct Message>(class Message_list::NoMessageTime,struct Message &,struct Message const &,wchar_t const *,unsigned int)" (??$_Debug_lt_pred@VNoMessageTime@Message_list@@UMessage@@U3@@std@@YA_NVNoMessageTime@Message_list@@AAUMessage@@ABU3@PB_WI@Z)
我不知道如何解决它。
在我的头文件 Message_list.h
#include <set>
#include <QSTRING>
#include "Message.h"
class Message_list
{
class NoMessageTime
{
public:
bool operator ()( const Message& left, const Message& right ) const;
};
typedef std::multiset<Message, NoMessageTime> MessageSet;
public:
void add( const Message& message );
private:
/** Inserts an item into the correct place in the list
*/
void Message_list::insert_item( const Message& message );
MainWindow* dialog_;
MessageSet messages_;
};
消息列表.cpp
void Message_list::addd( const Message& message )
{
QMutex mutex;
mutex.lock();
// Do something here
messages_.insert( message ); // error comes here
mutex.unlock();
}
在 vs-2010 中成功编译的相同文件..