尝试在 C++ 中构建简单的测试类

Coc*_*ola 0 c++

我无法理解我遇到的一些错误。我已经构建了一个带有驱动程序的简单测试类。有人可以指出我犯的错误吗?

在这里,我尝试创建一个 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)

谢谢

Ale*_*evo 5

在类之外定义类成员时,您应该使用类作用域。

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)