我收到了以下声明:
// file MadaPacket.h
class MadaPacket
{
// ....
public:
inline static bool word_is_header(int w);
}
作为通讯员声明:
// file MadaPacket.cpp
#include "MadaPacket.h"
inline bool MadaPacket::word_is_header(int w)
{
return w == 0xFBBA;
}
MSVC12构建器在链接时失败,原因如下:
未解析的外部符号" public:static bool __cdecl MadaPacket :: word_is_header(int)
向定义添加static
会导致错误
'静态'不应该用于在文件范围
定义的成员函数
从定义中删除inline
会导致错误
未解析的外部符号" public:static bool __cdecl MadaPacket :: word_is_header(int)
我想我误解了一些定义 - 声明关系。
修改
显然,如果可能的话,我希望同时拥有两个修饰符。
答案 0 :(得分:2)
从这两个地方删除inline
关键字。
仅当在多个翻译单元中包含的头文件中定义函数时,才应使用inline
关键字。好吧,在其他情况下也可以使用它,但这里没有一个适用。
答案 1 :(得分:-1)
在.h
文件和.cpp
文件中,您的定义没有相同的修饰符列表。两个定义应该完全相同,链接器才能找到它们。所以我先从两者中删除'static'并重新编译。