我有5套的 「.H」 & 「的.cpp」 文件:使用一個變量,而不會導致圓形扶養
- Main.cpp的
- Game.h,Game.cpp
- 家長。小時,Parent.cpp
- Child1.h,Child1.cpp
- Child2.h,Child2.cpp
麥n不包含類,也不包含頭文件 - 並且是應用程序的起點。除此之外,它使用收集的信息初始化類型爲「遊戲」的變量「myGame」。
Main.cpp的
#include "Game.h"
...
Game myGame(*parameters sent to constructor*)
遊戲是我的應用程序的主體。它的頭部包含Child1和Child2,並用這些類型初始化變量。它聲明的類「遊戲」
Game.h
#pragma once
#include "Child1.h"
#include "Child2.h"
class Game
{
public:
Game(HWND hWnd, ...);
~Game();
Child1 child1Obj;
Child2 child2obj[20];
...
private:
...
};
家長概括了兩個子類,並提供像函數和變量。它的標題不包含其他文件。
Parent.h
#pragma once
class Parent
{
public:
Parent(void);
~Parent(void);
...
};
Child1和CHILD2都是相似的,並且包括母頭。
Child1.h
#pragma once
#include "Parent.h"
class Child1 :
public Parent
{
public:
Child1();
~Child1();
};
我希望能夠在Parent
,Child1
和Child2
使用包含在Game
數據。
我的第一個猜測是簡單地將#include "Game.h"
插入到Parent.h
的頂部,但這樣做會導致循環依賴。
接下來,我以爲我只是必須引用實際的遊戲對象myGame.
(在Main.cpp
創建),每當我想用變量和函數Game
。但我不知道該怎麼做。也許我可以提前一個Main.h
文件中聲明myGame
類似如下:
Main.h
#pragma once
#include "Game.h"
Game myGame;
但爲了做到這一點我還是不得不使用#include "Game.h"
,並且包括「主.h「在我想使用myGame
的文件的頂部 - 導致了與上述相同的循環依賴問題。
有什麼辦法,我可以:
- 聲明類型遊戲中的未初始化
myGame
在 「Main.h」 - 初始化
myGame
在 「Main.cpp的」 - 使用
myGame
收集的信息在Parent,Child1和Child2中,通過包含myGame
被聲明的文件,而不引起循環依賴。
Am I abl e在「Main.h」中使用#include "Game.h"
創建一個Game變量,但是阻止包含繼承到包含「Main.h」的文件?
Parent,Child1和Child2如何使用Game?也許你可以使用遊戲的前鋒。 – kec
MacklinB,當然這種類型的問題都出現在[C]和[C++]中。但是,問題代碼顯然不是[C]。也許你應該考慮編輯你的問題,並刪除[C]標籤? –
在'Parent.cpp'中執行#include「Game.h」''。 'Parent'類定義不能依賴'Game',儘管它可以通過前向聲明接受指針或引用。當然,'Parent.cpp'中的函數體可以使用完整的'Game's。 –