Как я могу использовать/изменять класс в разных функциях другого класса?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу использовать/изменять класс в разных функциях другого класса?

Сообщение Anonymous »

Я пытаюсь создать игру, используя SDL2 на C++.
Моя структура основного кода игры такая:
  • Создайте предметную игру. (создавайте НЕОБХОДИМЫЕ объекты, такие как окно SDL или камера)
  • Вызов функции начинается с объектной игры. (Здесь создается каждая сущность или другие игровые компоненты, такие как тайловые карты или пользовательский интерфейс)
  • Проходной цикл функции gameLoop (физика) и Renderloop объектной игры до закрытия окна.
  • Вызов функции Очистка объектной игры, SDL_Quit и т. д.
Теперь в настоящее время моя проблема заключается в том, что различные функции (или методы) ) объектной игры нужны такие объекты, как TileMap или window. Однако они создаются в таких функциях, как start, а не в списке инициализаторов членов конструктора. Они не могут быть созданы в init-члене. list, потому что некоторым из этих объектов нужны переменные, которые можно вычислить только позже.
Пример:
В конструкторе игры окно SDL должен быть создан. Однако функция «renderLoop» игры также должна иметь доступ к этому окну SDL.
так что game.hpp в основном выглядел вот так

Код: Выделить всё

class Game
{
public:
Game(); // Here created: Window, Camera, Textures
void start();
void gameLoop(const Uint8* p_keyBoardState);
void RenderLoop();
void CleanUp();

const int reference_win_width = 1920;
const int reference_win_height = 1080;
int win_height;
int win_width;

/* Textures */
SDL_Texture* Dirt_Texture;
SDL_Texture* Test_Texture;

/* Things needed to render */
Camera playerCamera;
float scalefactor;
RenderWindow window;
TileMap TestMap;
};
и game.cpp выглядели так (сокращенно):

Код: Выделить всё

Game::Game()
{   //Initate every necessary object

win_width = 2000;
win_height = 1000;
float widthScaleFactor = win_width / (float)reference_win_width;
float heightScaleFactor = win_height / (float)reference_win_height;

scalefactor = 1;
window("TestGame", win_width, win_height, scalefactor); //doesnt work
// std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79105303/how-can-i-use-modify-a-class-in-different-functions-of-another-class[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»