我得到以下声明:

// 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/

10-11 18:15