【发布时间】:2020-05-31 17:19:49
【问题描述】:
当我将方法设为inline 时,编译失败并出现以下错误:
未定义符号:'int CPositionRequestor::State(void) const (?State@CPositionRequestor@@QBEHXZ)'
头文件:
class CPositionRequestor : public CActive
{
// ...
private:
TInt iState;
public:
inline TInt State() const;
}
CPP 文件:
inline TInt CPositionRequestor::State() const
{
return iState;
}
【问题讨论】:
-
它没有内联定义,这没有帮助。要么内联,要么将函数体写入 .h 文件。
-
这样的问题应该带有minimal reproducible example,其中包括用于编译的代码和命令。
-
内联函数实现必须在它使用的每个翻译单元中可见。因此,如果您只在该 cpp 文件中使用它应该没问题,除非您尝试在它被定义之前使用它。但是由于您显然有链接器错误,您正在尝试从不同的 cpp 文件或在同一个 cpp 文件中但在定义之前使用它。