현재 RPG 게임을 만들려고하고 있는데 문제가 있습니다. 이것은 제가 지금까지 가지고있는 레이아웃입니다.프로그램에 포함 레이아웃을 어떻게 설정해야합니까?
클래스 :
- 배우 - 기본 클래스 아무것도 등
- 단위 단위, 발사체로 '존재한다'고 - 상속 배우, 모든 단위 기준.
- 게임 - 게임에는 단일 인스턴스 만 있고 게임의 모든 개체에 대한 포인터가 포함됩니다. 0.1 초마다 모든 액터에서 가상 기능 gameTick을 호출 할 계획입니다.
문제는 모든 액터에 Game 인스턴스에 대한 포인터가 있어야한다는 것입니다. 반지름이 500에 해당하는 주문을 원한다면 게임에서 해당 범위 내의 모든 유닛 포인터를 찾아 돌려 주길 원합니다.
제 문제는 액터의 헤더 파일에 게임을 포함 시키면 프로그램이 컴파일되지 않습니다. 내 배우가 게임에 액세스하려면 어떻게해야합니까? 아니면 잘못된 방향으로 가고 있습니까?
미리 감사드립니다. 대신 일을
// START main.cpp
#include <iostream>
#include "game.h"
int main()
{
std::cout << "All done\n";
return 0;
}
// END main.cpp
// START actor.h
#ifndef __ACTOR_H_
#define __ACTOR_H_
#include <iostream>
//#include "game.h" Causes many errors if uncommented
class Actor
{
public:
Actor();
std::string name_;
};
#endif
// END actor.h
// START actor.cpp
#include "actor.h"
Actor::Actor()
{
name_ = "Actor class";
}
// END actor.cpp
// START unit.h
#ifndef __UNIT_H_
#define __UNIT_H_
#include "actor.h"
class Unit : public Actor
{
public:
Unit();
};
#endif
// END unit.h
// START unit.cpp
#include "unit.h"
Unit::Unit()
{
name_ = "Unit class";
}
// END unit.cpp
// START game.h
#ifndef __GAME_H_
#define __GAME_H_
#include <vector>
#include "unit.h"
class Game
{
public:
std::vector< Actor * > actors_;
std::vector< Unit * > units_;
};
#endif
// END game.h
인터페이스에 종속성 문제를 해결하기 위해 몇 가지 문제를 해결하는 것에 대해 어떻게 생각합니까? 순환 종속성과 관련하여 발생하는 오류를 가정합니다. –
unit.h에는 actor.h가 포함되어 있으며 actor.h에는 game.h가 포함되어 있으며 game.h에는 unit.h / – Dan