C++:成员类之间的构造函数依赖关系
c++: constructor dependancy between member classes
初始化以下构造的首选方法是什么?以下示例的问题在于,为了使用其构造函数初始化renderer_
,我需要来自类window_
的信息,但该信息仅在初始化该类后可用,并且两个实例同时初始化,因为它们都是同一类的成员。
class GraphicsManager
{
public:
GraphicsManager(
const std::string &windowTitle,
const int &windowWidth,
const int &windowHeight
) : window_(windowTitle,windowWidth,windowHeight),
renderer_(window_.getHandle()); //IMPOSSIBLE, I presume
private:
Window window_;
Renderer renderer_;
};
class Window
{
public:
Window() : windowHandle_(NULL);
Window(const std::string &title, const int &width, const int &height);
~Window();
SDL_Window *getHandle();
private:
SDL_Window *windowHandle_;
};
class Renderer
{
public:
Renderer() : rendererHandle_(NULL);
Renderer(SDL_Window *WindowHandle);
~Renderer();
private:
SDL_Renderer *rendererHandle_;
};
根本不
renderer_
包含在GraphicsManager
构造函数的初始化列表中,因此隐式调用renderer_
的默认构造函数。在GraphicsManager
的构造函数的主体中,我将为空renderer_
分配一个正确初始化的Renderer
类实例。这可以在GraphicsManager
构造函数的主体中完成吗?GraphicsManager( const std::string &windowTitle, const int &windowWidth, const int &windowHeight ) : window_(windowTitle,windowWidth,windowHeight) { //doable? is window_ initialized yet at this point? renderer_ = Renderer(window_.getHandle()); }
向受影响的类添加单独的
initialize(parameters)
方法,以及使用它们来初始化所有内容,而不是依赖构造函数,但也将初始化的责任委托给类的客户端?将类的组成/层次结构更改为其他内容?
并且这两个实例同时初始化,因为它们都是同一类的成员。
成员变量按其声明在类中出现的顺序进行初始化。你试过这个吗:
GraphicsManager(
const std::string &windowTitle,
const int &windowWidth,
const int &windowHeight
) : window_(windowTitle,windowWidth,windowHeight), renderer_(window_.getHandle())
{
}
这应该也一样有效。
相关文章:
- C++GTKMM gui循环依赖关系
- 如何在头文件中声明类模板(由于循环依赖关系)
- 对在不同二进制文件中创建的对象文件的依赖关系
- 使用Bazel构建具有不同编译器/链接器选项的C/C++依赖关系
- OpenVINO - 推理库插件 libMKLDNNPlugin.so 无法解析依赖关系
- 模拟测试中类的依赖关系
- C++模板方法中的循环依赖关系
- 解析正交模块的依赖关系
- C++ 类/结构中的函数依赖属性
- 现代编译器是否可以在使用依赖关系注入时取消虚拟化函数调用
- 具有模板函数的循环依赖关系
- 通过包装器对象的构造函数将依赖关系传递给包装器对象
- 复制具有相互引用/循环依赖关系的类的构造函数
- C++函数依赖关系图
- 是否有任何工具可以显示函数中的数据依赖关系
- C++:成员类之间的构造函数依赖关系
- 在c++中,当组合对象构造函数有依赖关系时,如何在初始化列表中强制它们的顺序
- 循环数据依赖关系析构函数
- 模板类成员函数之间的循环依赖关系
- 如何将'this'作为参数传递给另一个没有循环依赖关系的类构造函数?