【发布时间】:2013-10-27 20:47:47
【问题描述】:
我已经停止使用 MSVC,并且隐约记得内联类成员函数没有问题。但是,当我这样使用 inline 关键字时:
//In header file
class A {
public:
inline void funcA(void);
};
//In cpp file
void A::funcA(void) {
}
我得到一个 LNK2019,未解析的符号(即使该函数与错误所说的缺失完全匹配)。我尝试将标题和定义都标记为内联,并且发生了同样的事情。在尝试构建后,我还删除了 inline 关键字,并且错误一直存在,直到我清理解决方案,之后一切都构建良好的 sans-inline。当我用谷歌搜索问题时,似乎没有人遇到同样的问题,这表明我遗漏了一些明显的东西......但它是什么?
【问题讨论】:
-
funcA 是否在另一个翻译单元中使用,而不是在其中定义的翻译单元中使用?如果是这样,那就是导致错误的原因,因为编译器需要知道定义才能用函数体替换调用。每个翻译单元都需要一个相同的定义,因此它可能应该放在标题中,而不是 cpp 文件中
标签: c++ visual-studio visual-c++ inline