我正在用c++编写一个程序,但我不确定这种方法是否正确。
class A {
private:
unsigned *a;
bool checkA() {
return a != nullptr;
}
public:
A() {
this->a = nullptr;
}
void setA(unsigned a) {
this->a = new unsigned(a);
}
}
成员变量'a'只能由'setA'设置,但是在其他方法中,我必须检查'a'是否已设置。因此我使用nullptr检查它是否已设置。
这段代码是一个好的实践吗?
我试着将“a”的数据类型改为int,并将其设置为-1,以注意未初始化的值。然而,我认为有更好的方法来做到这一点。
请给予我一些建议。
1条答案
按热度按时间lqfhib0f1#
如果您确实需要,可以使用
std::optional<int>
。但是
setA
本身是一个反模式,只需在构造函数中设置值,RAII是您的朋友,而不是要主动避免的东西。如果
a
始终存在,则要比A
有状态(有时有a
,有时没有)更容易推断代码。