在 C++ 中使用内联方法时出现未定义符号错误
Undefined symbol error when use inline methods in C++
当我将方法设为 inline
时,编译失败并出现此错误:
Undefined symbol: '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 文件中。 (只需在 class 定义之后剪切并粘贴即可)。
或者正如@einpoklum 所注意到的,如果您不需要它,请从所有定义中删除内联。
当我将方法设为 inline
时,编译失败并出现此错误:
Undefined symbol: '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 文件中。 (只需在 class 定义之后剪切并粘贴即可)。
或者正如@einpoklum 所注意到的,如果您不需要它,请从所有定义中删除内联。