【发布时间】:2015-08-05 14:19:05
【问题描述】:
#include <iostream>
#include <stdlib.h>
class B;
class A {
int x;
public:
B it();
friend class B;
};
class B {
int y;
A a;
public:
B(A aa):y(99), a(aa) {};
int get_y() {
return this -> y;
}
};
using namespace std;
int main() {
A md;
cout << md.it().get_y() << endl;
return 0;
}
忽略封装和其他细节,我的问题是我想使用“md.it().get_y()”,但是我的编译器给了我这个链接器错误: 架构 x86_64 的未定义符号: “A::it()”,引用自: main.o 中的 _main ld:未找到架构 x86_64 的符号。 我该如何解决这个问题?
【问题讨论】:
-
类 B 未完全定义时不能使用,当编译器到达 A 的定义时,它不知道类 B 是什么样的。它只知道有一个类叫 B,所以它不能创建 B 的对象来返回它!解决方案是使用引用或指向对象的指针
标签: c++ class linker linker-errors