我正在用 C++ 编写几个类,这些类覆盖了常见的 SDL 2 函数。
A 类保存 SDL 窗口数据并对其进行操作
class A
{
protected:
SDL_Window *window;
public:
SDL_Window* get_window(){ return window; }
};
B 类处理渲染器管理,需要访问 SDL 窗口数据
class B : public A
{
private:
...
public:
/**
This is the functions that access
the window data
*/
void create_renderer( int index, Uint32 flags );
};
void B::create_renderer( int index, Uint32 flags )
{
/**
Input window data:
The window data from class A, see the section "I have tried:"
To see what I have tried to do to get the window data
*/
SDl_CreateRenderer( (Input window data ), index, flags );
}
问题是这样的,当我在函数 create_renderer() 中从 B 类中的 A 类访问窗口数据,然后将该窗口数据输入所需的函数( SDL_CreateRenderer( ... ) )时,我在 SDL_CreateRenderer( ...)。这是因为输入了错误的窗口数据地址。
我试过了:
this->window;
this->get_window();
window
get_window();
这些都导致段错误
问题是我无法让它访问窗口数据所在的内存位置。
当我运行调试器时,窗口数据的内存地址与使用我上面指定的方法时输入函数的内存地址不同。问题在于我试图获取窗口数据的方法。
我知道您通过使用函数参数将窗口数据输入 create_renderer() 但在项目的宏伟计划中这将是愚蠢的,因为这两个类被捆绑在一起并且会使用户做很多不必要的工作。
如何让 B 类访问 A 类中的窗口数据?
我如何访问 A 类和 B 类:
class Overlord
{
A a;
B b;
};
Overlord overlord;
overlord.b.create_renderer( -1, 0 );
这就是我如何访问 B 类和函数 create_renderer() 的基础知识。就像我说过的那样,A 类和 B 类是一个大类计划的一部分,超出了这个问题的范围。希望这可以帮助。