在 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 所注意到的,如果您不需要它,请从所有定义中删除内联。