在C++中使用内联方法时出现未定义的符号错误



当我将方法设为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;
}

内联函数需要其定义在调用该函数的文件中可用。

因此,如果您在一个 cpp 文件中定义它并尝试在第二个 cpp 文件中调用它,则不会找到它。

您需要做的是将此定义移动到 h 文件中。(只需在类定义之后剪切并粘贴它(。

或者正如@einpoklum所注意到的,如果您不需要它,请从所有定义中删除内联。

最新更新