簡體   English   中英

如何在c ++中實現關聯

[英]How to implement association in c++

我想實現關聯I C ++,但我收到了幾個錯誤,我無法解決它們。

Class A{

public: //methods
private:
B * b_obj;

};

Class B{
public: //methods
private:
A * a_obj;
}

這兩個類都在單獨的文件中。 AhA.cppBhB.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM