所以我想要做的就是存儲:對象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