Мне не очень повезло в C ++, когда один из моих классов мог видеть / ссылаться / копировать данные из одного из моих других классов, чтобы он мог его использовать.
В основном я получаю ошибку «Ядро» не называет тип или когда я пытаюсь переслать объявление (/1706153/oshibka-x-ne-nazyvaet-tip-v-c) Я получаю поле «Ядро» имеет неполный тип
Я предполагаю, чтоВторая ошибка связана с тем, что класс не инициализируется, возможно, поэтому ему нечего получить? Не знаю :( (см. код внизу)
В моих играх на C # я обычно создавал "базовый «класс», а затем в нем я бы начал другие классы, такие как «сущности», «игрок», «оружие» и т. д. Когда я запускаю эти другие классы, я передаю «этот»
public WeaponManager c_WeaponManager;
...
c_WeaponManager = new WeaponManager(this);
так что я всегда мог получить доступ к общедоступным значениям любого класса из любого места, пока он проходил через ядро. Например: когда я делаю свое обновление через класс «оружия», и он обнаруживает его попадание в игрока, яЯ бы просто получил функцию в этом классе, чтобы ...
core.playerClass.deductHealth(damageAmmount);
.или что-то в этом роде.
Это позволило мне хранить множество переменных, к которым я хотел получить доступ, аккуратно спрятано в областях, которые, по моему мнению, были подходящими.
Я знаю, что это не очень хороший метод программирования, но он мне нравится, и я в основном занимаюсь хобби-программированием, поэтому мне нравится возможность быстрого доступа к моим данным без бюрократических процедур Get () и Set ().функции передачи данных из одного класса в другой и другой.Кроме того, я все еще копаюсь в заголовочных файлах, так как они кажутся неприятными в заднице
//-----------[In vid_glinit.h]-------------------
include "core.h"
class Vid_glInit
{
public:
RECT glWindowRect;
Core core;
Vid_glInit();
~Vid_glInit();
void StartGl(HWND _hGameWindow, int resolutionX, int resolutionY);
private:
};
//------------[in core.h]----------
include "vid_glinit.h"
class Core
{
public:
Vid_glInit vid_glinit(this);
enum GAME_MODE
{
INIT,
MENUS,
GAMEPLAY
};
GAME_MODE gameMode;
HWND hGameWindow;
HGLRC hGameRenderContext; // Permanent Rendering Context
HDC hGameDeviceContext; // Private GDI Device Context
//functions go here
Core();
~Core();
void testFunc();
void Run();
void Update();
void Render();
void StartGl(int resoultionX, int resolutionY);
private:
};
Цель состоит в том, чтобы при запуске OpenGl вместо множества маленьких функцийПередавая данные, я просто говорю glFunctions, кому нужен контекст Device или Rendering, чтобы использовать core.hGameDeviceContext , если это имеет смысл