我使用头文件(.h)和定义(.cpp)文件在 C++ 中创建了一个简单的类“Hello”。这是头文件内容:
#ifndef HELLO_H
#define HELLO_H
#include <string>
namespace test
{
class Hello
{
private:
std::string name;
public:
Hello();
void say_hello();
};
}
#endif
并且定义文件内容和你预想的一样:
#include "Hello.h"
#include <iostream.h>
using namespace test;
Hello::Hello()
{
this->name = "Yoppy Yunhasnawa";
}
void Hello::say_hello()
{
string message = "Hello, " + this->name + ".. Have nice day!";
cout << message << "\n";
}
我将此类包含到 main.cpp 文件中并像这样使用它:
#include "Hello.h"
using namespace test;
int main(int argc, char *argv[])
{
Hello* hello = new Hello;
hello->say_hello();
}
当我像这样用 g++ 编译 main.cpp 文件时,
g++ main.cpp
我收到以下烦人的错误:
Undefined symbols for architecture x86_64:
"test::Hello::say_hello()", referenced from:
_main in ccsaoOZa.o
"test::Hello::Hello()", referenced from:
_main in ccsaoOZa.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
say_hello
但是,当我不调用构造函数和方法时,不会出现该错误:
int main(int argc, char *argv[])
{
Hello* hello;// = new Hello;
//hello->say_hello();
}
我使用 macport GCC 4.7,我很确定我的方法在那里,但为什么这个symbol(s) not found
错误一直出现?请告诉我我的错误。谢谢你。