簡體   English   中英

通過組合訪問父類

[英]Accessing parent classes through composition

在我的程序中,我有一個非常簡單的結構來表示RPG游戲中的地圖。 我有一個Map類,其中包含一個由Area對象組成的2d數組“ Grid”,如下所示:

 #pragma once
 #include "Area.h"

 class Map
 {
 public:
     Map();
     ~Map();

     Area Grid[10][10];
 };

然后在Map構造函數中:

 Map::Map()
 {
for (int y = 0; y < 10; y++) {
    for (int x = 0; x < 10; x++) {
        Grid[x][y] = Area();
    }
}
}

我希望Area對象能夠從Map對象訪問某些值,並且我讀到,在構造Area對象時,我可以包括對map類的引用,以便它可以返回其父對象。 但是要做到這一點,我將不得不在Area.h中#include“ Map.h”,這將創建一個include循環,並且總體上不是很好。 那么我將如何在每個區域對象中注入對該區域父對象的引用? 感謝您的任何幫助。

// Area.h
#pragma once
struct Map;

struct Area {
    Map* map = nullptr;
    Area() {}
    explicit Area( Map* m) : map(m) {}
};

請注意,您可能想擁有Area.cpp(包括Map.h)中定義的Area的某些功能。 為了示例代碼的簡單起見,我只是省略了它。

// Map.h
#pragma once
#include "Area.h"

struct Map
{
    Map();
    ~Map();

    Area Grid[10][10];
};

// Map.cpp
#include "Map.h"

Map::Map()
{
    for (int y = 0; y < 10; y++) {
        for (int x = 0; x < 10; x++) {
            Grid[x][y] = Area(this);
        }
    }
}

Map::~Map() {}

// main.cpp
#include "Map.h"
int main()
{
    Map m;
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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