我有一个Class(MethodClass.h& MethodClass.cpp文件)和一个main.cpp
主要是我调用构造函数然后调用方法。
构造函数工作正常但是对于方法我得到错误: " Test / main.cpp:13:未定义的对`MethodClass :: testMethod()''"
的引用我简化了这个测试项目的问题:
MethodClass.h
#ifndef METHODCLASS_H
#define METHODCLASS_H
#include <cstdlib>
#include <iostream>
class MethodClass {
public:
MethodClass();
MethodClass(const MethodClass& orig);
virtual ~MethodClass();
void testMethod();
private:
};
#endif /* METHODCLASS_H */
MethodClass.cpp:
#include "MethodClass.h"
using namespace std;
MethodClass::MethodClass() {
cout << "Constructor: MethodClass" << endl;
}
MethodClass::MethodClass(const MethodClass& orig) {}
MethodClass::~MethodClass() {}
void testMethod(){
cout << "testMethod" << endl;
}
main.cpp中:
#include <cstdlib>
#include "MethodClass.h"
#include "MethodClass.h"
using namespace std;
int main(int argc, char** argv) {
MethodClass mClass = MethodClass();
cout << "hallo" << endl;
mClass.testMethod();
return 0;
}
如果我重新这个,构造函数工作正常 - 结果: 构造函数:MethodClass 喂
如果我同时转到第一行:// #include&#34; MethodClass.h&#34;,它仍然没问题,这是正常的还是你可以向我解释为什么会这样?
顺便说一句:我使用Netbeans 8.0.2和MinGW编译器
答案 0 :(得分:3)
将testMethod的实现更改为以下内容:
void MethodClass::testMethod(){
cout << "testMethod" << endl;
}
您需要正确确定.cpp文件中定义的所有函数的范围。 void testMethod()只是一个没有容器类的全局函数testMethod()。