所以我想要做的就是存储:对象B和对象B对象的引用没有指针
- 对象B在对象A和对象B的对象A的
- 参考
虽然不使用指针。
使用指针和引用我试图避免的唯一区别是访问语法。我不想写“ - >”每次我在对象B.访问对象的时间
我认为可以工作,但会引发分割故障代码:
啊
#ifndef A_H
#define A_H
class B;
class A{
B b;
public:
A();
};
#endif
了Bh
#ifndef B_H
#define B_H
class A;
class B{
A& a;
public:
B(A &_a);
};
#endif
A.cpp
#include "A.h"
#include "B.h"
A::A():b(B(*this)){}
B.cpp
#include "B.h"
#include "A.h"
B::B(B &_b):a(_b){}
我还以为是造成分段错误使用“这”在初始化列表(uninititialized实例)的关键字,但我读过,只要我不访问它的第一件事一切都应该没问题。我的构造函数是空的,所以我不会发生什么错误。
是否可以做到这一点类似于我在做什么?如果没有,那么为什么,有什么可以让我不写' - >'?
编辑: 的确有,因为它只是写成伪代码只是让任何人都没有浪费时间,这里不再粘贴不必要的代码一些编译错误。编写伪代码当然编译完成。 goo.gl/DHlM6X
但现在它运行没有seg故障。我想我的项目中有一些我做的不同。我将不得不测试一下为什么它在项目中不起作用,我会发布什么问题,以便问题可以有真正的答案。
此代码编译? – NathanOliver
如果我拼写正确,那么是的,在archblock下的codeblocks C++ 11中。 – Antua
有趣。 AFAIK A.h不应该编译,因为您有一个常规变量为不完整类型。 – NathanOliver