[英]How to implement association in c++
我想實現關聯I C ++,但我收到了幾個錯誤,我無法解決它們。
Class A{
public: //methods
private:
B * b_obj;
};
Class B{
public: //methods
private:
A * a_obj;
}
這兩個類都在單獨的文件中。 即Ah
, A.cpp
, Bh
和B.cpp
。 VS2012給出錯誤錯誤C2061:A附近的語法錯誤
您需要轉發聲明類:
啊:
class B;
class A {
public:
// methods
private:
B* b_obj;
};
BH
class A;
class B {
public:
// methods
private:
A* a_obj;
};
可以以多種方式處理這種特定的交叉引用情況。
假設你不能讓Ah包括Bh和Bh包含Ah,因為當最多包含一次標題時,一個將始終包含在另一個之前,最簡單的解決方案就是使用前向引用 :
啊
class B;
class A {
B* bObj;
}
A.cpp
#include "A.h"
#include "B.h"
...
BH
class A;
class B {
A* aObjM;
}
B.cpp
#include "B.h"
#include "A.h"
...
這個簡單的解決方案不允許你在Bh
使用A
規范(例如調用方法),反之亦然,也不允許你在B類中存儲具體實例( A
vs A*
),但它聽起來不像你的情況。
每個文件包含哪些包含語句? 從你在這里看到的前瞻聲明似乎對你有用。
// A.h
#includes without B.h
class B;
class A {
public:
// whatever
private:
B * b_obj;
};
// B.h
#includes without A.h
class A;
class B {
public:
// whatever
private:
A *a_obj;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.