-2
我試圖將SLD_Window *窗口傳遞給另一個類來處理它。 我不知道它是否是一種正確的編程方式,但我想嘗試一下。 我在main.cpp中創建一個SDL_Window *窗口,然後將指針*窗口傳遞給另一個類。 我發現所有渲染器函數在窗口中沒有任何影響,但是當我將它們複製到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'參數所指向的窗口發生改變,但你實際上並沒有做任何事情。你在'window'類中顯然有'okno'字段,但是將該字段設置爲其他值不會改變'main'中聲明的'okno'。 在編寫完整的應用程序之前,您應該刷新一些基本的C++知識。 – Cubic