Я пытаюсь передать окно SLD_Window * в другой класс, чтобы работать над ним. Я не знаю, является ли это правильным способом программирования, но я хотел бы попробовать это. Я создаю окно SDL_Window * в main.cpp, а затем передаю указатель * Окно в другой класс. Я выяснил, что все функции Renderer не оказывают никакого влияния на окно, но когда я скопировал их на экран window.cpp, был красный цвет. Похоже, я передаю указатель, но он создает совершенно новое окно. Как я могу работать во многих классах в одном окне, которое определено в основном классе? Это похоже на то, что я хотел бы создать Draw.cpp, где бы я сохранил все функции рисования.Передача SDL_Window другому классу
main.cpp
SDL_Window *WindowMain = NULL;
window Window(WindowMain , name);
renderer = SDL_CreateRenderer(WindowMain , -1, SDL_RENDERER_ACCELERATED);
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 100);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer)
window.h
class window {
public:
window(SDL_Window *Window, const char* Nazwa);
virtual ~window();
private:
SDL_Window *okno;
};
window.cpp
window::window(SDL_Window *Window, const char* Nazwa) {
okno = Window;
if(SDL_Init(SDL_INIT_VIDEO) !=0)
{
printf("Unable to initialize SDL due error: %s", SDL_GetError());
}
okno = SDL_CreateWindow(Nazwa,
SDL_WINDOWPOS_CENTERED, // X position
SDL_WINDOWPOS_CENTERED, // Y position
800, // Width
600, // Height
SDL_WINDOW_SHOWN);
if(okno == NULL){
printf("Unable to create window due error: %s", SDL_GetError());
}
}
window::~window() {
SDL_DestroyWindow(okno);
SDL_Quit();
}
вы нарушая все тип/переменные именования. Трудно читать ... –
Проблема в том, что вы ожидаете, что окно, на которое указывает параметр «Window», изменится, но вы на самом деле ничего не делаете с ним. У вас, видимо, поле 'okno' в вашем классе' window', но это поле для другого значения не изменит 'okno', который вы указали в' main'. Прежде чем писать полное приложение, вы должны, возможно, изучить некоторые базовые знания на C++. – Cubic