我得到以下声明:
// 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:静态布尔值__cdecl MadaPacket :: word_is_header(int)
在定义中添加
static
会导致错误在文件范围内定义的成员函数上不应使用“静态”
从定义中删除
inline
会导致错误未解析的外部符号“ public:静态布尔值__cdecl MadaPacket :: word_is_header(int)
我想我误解了一些定义-声明关系。
编辑
显然,如果可能的话,我想同时拥有两个修饰符。
最佳答案
从两个地方删除inline
关键字。inline
关键字仅在定义多个转换单元所包含的头文件中的函数时才应使用。嗯,在其他情况下也可以使用它,但是这里没有一个适用。
关于c++ - 定义和声明之间的C++说明符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36573305/