簿记与使用指针检查成员变量是否已初始化

时间:2014-04-07 08:51:15

标签: c++ pointers

我有一个类Action,它为每个设备输入类型保存一个成员变量。它们在构造后初始化,但我不保证它们会被初始化。

class Action
{
private:
   KeyboardButton mKeyboardButton;
   MouseButton    mMouseButton;
   JoystickButton mJoystickButton;
}

问题是这三个类没有提供验证它们是否已初始化的方法。我可以做一些簿记并存储一个布尔值。但是,这似乎容易出错。我可以使它们成为指针,然后比较经文nullptr。但是,除非必要,否则我总是避免使用指针。

我建议的两种方法之间有什么取舍?

1 个答案:

答案 0 :(得分:1)

我会假设每个Action都需要它自己KeyboardMouseJoystick的实例,因为如果你想在Action之间分享它们你必须使用指针。所以问题是 - 有一个Action是否有意义,其中至少有三个未初始化?

如果答案是“否” - 每个Action必须包含所有这三个 - 你可以在Action'的构造函数中初始化它们,而不必担心它们没有被初始化。

如果答案是“是” - 请使用指针!如果确保在构造函数中分配初始化或使它们无效,要在复制构造函数和赋值运算符重载中克隆它们,并在析构函数中对它们进行delete - 那么应该没有任何问题!< / p>

PS。我假设每个Action都需要它自己的三个实例,但是如果它可以共享它们并且你不这样做只是因为你不喜欢指针,你应该考虑用指针共享它们。 / p>