我有三个文件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.
请帮助谢谢
答案 0 :(得分:3)
删除inline
关键字,或将定义移至标题中(保留inline
)。
inline
用于放宽单一定义规则以允许标头中的定义。但是,它也要求使用它的每个翻译单元中的定义,这通常要求定义在标题中。
如果没有inline
,则应用正常的链接规则,并且在一个翻译单元中必须有单个定义。如果您从现有代码中删除inline
,那就是您所拥有的。
(你还需要在函数调用outputMethod.printThisMethod()
中添加括号,但可能你的真实代码有它们,否则它不会达到链接错误。)
答案 1 :(得分:0)
您需要更改
outputMethod.printThisMethod;
到
outputMethod.printThisMethod();