链接从指向实例的指针调用静态方法时出错

时间:2016-05-19 11:51:55

标签: c++

在编译下面的代码时,VC ++会在函数static的主文件中抱怨链接错误。该函数已声明为IComponent * componentInterface = init((IKernel *) kernelInterface); Profile componentProfile = componentInterface->getProfile(); 并已定义;但我认为这不是问题所在。我错过了什么吗?我是以错误的方式调用静态方法吗?

的main.cpp

class IComponent{
        public:
            static bool startComponent();
            static bool stopComponent();
            static Profile getProfile();
        };

IComponent.h

Error MessageError  1   error LNK2001: unresolved external symbol "public: static class Profile __cdecl IComponent::getProfile(void)" (?getProfile@IComponent@@SA?AVProfile@23@XZ)  C:\...\Implementation\main.obj  Moniware

编辑:

scanFile

1 个答案:

答案 0 :(得分:1)

应该调用静态函数:

 IComponent::getProfile();

您不需要IComponent的对象或指针来调用静态函数。

但正如您所提到的,您收到链接器错误,这意味着您错过了实现:链接器无法找到实现。