我有一个类Action
,它为每个设备输入类型保存一个成员变量。它们在构造后初始化,但我不保证它们会被初始化。
class Action
{
private:
KeyboardButton mKeyboardButton;
MouseButton mMouseButton;
JoystickButton mJoystickButton;
}
问题是这三个类没有提供验证它们是否已初始化的方法。我可以做一些簿记并存储一个布尔值。但是,这似乎容易出错。我可以使它们成为指针,然后比较经文nullptr。但是,除非必要,否则我总是避免使用指针。
我建议的两种方法之间有什么取舍?
答案 0 :(得分:1)
我会假设每个Action
都需要它自己Keyboard
,Mouse
和Joystick
的实例,因为如果你想在Action
之间分享它们你必须使用指针。所以问题是 - 有一个Action
是否有意义,其中至少有三个未初始化?
如果答案是“否” - 每个Action
必须包含所有这三个 - 你可以在Action'
的构造函数中初始化它们,而不必担心它们没有被初始化。
如果答案是“是” - 请使用指针!如果确保在构造函数中分配初始化或使它们无效,要在复制构造函数和赋值运算符重载中克隆它们,并在析构函数中对它们进行delete
- 那么应该没有任何问题!< / p>
PS。我假设每个Action
都需要它自己的三个实例,但是如果它可以共享它们并且你不这样做只是因为你不喜欢指针,你应该考虑用指针共享它们。 / p>