将SDL_Window传递给另一个类
Passing SDL_Window to another class
我正试图将SLD_Window *窗口传递给另一个类来处理它。我不知道这是不是一种合适的编程方式,但我想尝试一下。我正在main.cpp中创建SDL_Window *Window,然后将指针*Window传递给另一个类。我发现所有的Renderer函数在window中没有任何影响,但是当我将它们复制到window.cpp时,屏幕是红色的。看起来我传递了指针,但它创建了一个全新的窗口。我怎么能在许多类工作在同一窗口,这是在主类定义?它是这样的,因为我想建立一个Draw.cpp,我将保留所有的绘图函数。
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();
}
主例程在本地声明okno
:
SDL_Window *okno = NULL;
window Window(okno, name); // `okno` is NULL and remains NULL
renderer = SDL_CreateRenderer(okno, -1, SDL_RENDERER_ACCELERATED);
在window.cpp中,你使用了一个名为okno
的成员,一个全局变量,无论如何,但这不能是同一个变量。
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,
两个okno
变量具有完全不同的作用域,并且您不能像这样从window
构造函数初始化okno
。
=> okno
保持NULL
在主级别=>你的SDL_CreateRenderer
传递一个NULL窗口指针。
(更不用说设计真的很奇怪,命名也是…)
你可能想要的是:
window Window(name);
SDL_Window *okno = Window.okno;
renderer = SDL_CreateRenderer(okno, -1, SDL_RENDERER_ACCELERATED);
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- C++试图读取一个文件并输出到另一个文本文件
- 如何将指针从一个void函数传递到另一个C++
- 如何从另一个文件继承私有成员变量和公共函数
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- C++-我可以创建另一个类的成员并在构造函数中使用它吗
- 无法使用 SDL 在 C++ 中制作 while 循环从一个类移动到另一个类
- 在另一个库(SDL和Eclipse)之上构建一个新库