我得到以下声明:
// 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
添加到定义会导致错误
'static'不应用于在文件范围定义的成员函数
从定义中删除 inline
会导致错误
未解析的外部符号“public:static bool __cdecl MadaPacket :: word_is_header(int)
我想我误解了一些定义 - 声明关系 .
EDIT
显然我想要两个修饰符,如果可能的话 .
2 回答
从两个位置删除
inline
关键字 .仅当在多个翻译单元中包含的头文件中定义函数时,才应使用
inline
关键字 . 嗯,还有其他情况可以使用它,但这里没有一个适用 .您的
.h
文件和.cpp
文件中没有相同的修饰符列表 . 两个定义应该完全相同,链接器才能找到它们 . 所以我'd first remove '静态'来自两者并重新编译 .