Ich versuche, SLD_Window * Fenster an eine andere Klasse zu übergeben, um daran zu arbeiten. Ich weiß nicht, ob es eine richtige Art der Programmierung ist, aber ich würde das gerne ausprobieren. Ich erstelle ein SDL_Window * Window in main.cpp und übergebe dann das Zeiger * Window an eine andere Klasse. Ich habe herausgefunden, dass alle Renderer-Funktionen keine Auswirkung auf das Fenster haben, aber wenn ich sie in window.cpp kopierte, war der Bildschirm rot. Sieht so aus, als würde ich den Zeiger übergeben, aber es erzeugt ein komplett neues Fenster. Wie kann ich in vielen Klassen auf demselben Fenster arbeiten, das in der Hauptklasse definiert ist? Es ist so, weil ich Draw.cpp erstellen möchte, wo ich alle Zeichenfunktionen behalten würde.Übergabe von SDL_Window zu einer anderen Klasse
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();
}
Sie haben alle Art/Variablen Namenskonventionen verstoßen. Schwierig zu lesen ... –
Das Problem ist, dass Sie erwarten, dass sich das Fenster, auf das der 'Window' Parameter zeigt, ändert, aber Sie tun eigentlich nichts damit. Sie haben anscheinend ein 'okno'-Feld in Ihrer' window' Klasse, aber wenn Sie dieses Feld auf einen anderen Wert setzen, wird das 'okno', das Sie in' main' deklariert haben, nicht geändert. Sie sollten wahrscheinlich einige grundlegende C++ - Kenntnisse auffrischen, bevor Sie eine vollständige Anwendung schreiben. – Cubic