我无法理解我遇到的一些错误。我已经构建了一个带有驱动程序的简单测试类。有人可以指出我犯的错误吗?
在这里,我尝试创建一个 Test 对象并将 number 变量设置为 1,然后打印 number 变量。
司机:
#include "test.h"
#include <iostream>
using namespace std;
int main() {
Test *myTest = new Test(1);
cout << myTest->getNumber();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
测试.h
#ifndef __TEST_H__
#define __TEST_H__
class Test
{
private:
int number;
public:
Test();
Test(int theNumber);
int getNumber();
};
#endif
Run Code Online (Sandbox Code Playgroud)
测试.cpp
#include "test.h"
Test() {
}
Test(int aNumber) {
number = aNumber;
}
int getNumber() {
return number;
}
Run Code Online (Sandbox Code Playgroud)
我在这里遇到的错误是
> Undefined symbols for architecture x86_64: "Test::getNumber()",
> referenced from:
> _main in cc8cXu6w.o "Test::Test(int)", referenced from:
> _main in cc8cXu6w.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
谢谢
在类之外定义类成员时,您应该使用类作用域。
Test::Test(){
}
Test::Test(int aNumber){
//...
}
int Test::getNumber(){
//...
}
Run Code Online (Sandbox Code Playgroud)
另外,不要忘记编译和链接 test.cpp。仅编译 main.cpp(或调用的任何驱动程序源文件)也可能导致此类链接错误。
如果使用 GCC,请使用以下命令进行构建:
g++ -o test main.cpp test.cpp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
618 次 |
| 最近记录: |