未定义的类方法引用

时间:2014-01-14 11:45:15

标签: c++

我有三个文件method.h,method.cpp,main.cpp

method.h

#ifndef METHOD_H
#define METHOD_H

class method {

public:
       void printThisMethod();
private:

};

#endif

method.cpp

#include "method.h"
inline void method::printThisMethod() {
    //some methods done here
}

的main.cpp

 #include <iostream>
 #include <string>
 #include "method.h"

 int main() {
     method outputMethod;
     outputMethod.printThisMethod;
 }

我收到了错误,

undefined reference to method::printThisMethod.

请帮助谢谢

2 个答案:

答案 0 :(得分:3)

删除inline关键字,或将定义移至标题中(保留inline)。

inline用于放宽单一定义规则以允许标头中的定义。但是,它也要求使用它的每个翻译单元中的定义,这通常要求定义在标题中。

如果没有inline,则应用正常的链接规则,并且在一个翻译单元中必须有单个定义。如果您从现有代码中删除inline,那就是您所拥有的。

(你还需要在函数调用outputMethod.printThisMethod()中添加括号,但可能你的真实代码有它们,否则它不会达到链接错误。)

答案 1 :(得分:0)

您需要更改

outputMethod.printThisMethod;

outputMethod.printThisMethod();