【发布时间】:2013-09-04 18:10:25
【问题描述】:
我在尝试实现一个包含指向布尔值的指针的类时遇到问题...
class BoolHolder {
public:
BoolHolder(bool* _state);
bool* state;
}
BoolHolder::BoolHolder(bool* _state) {
state = _state;
}
bool testbool = false;
BoolHolder testbool_holder( &testbool );
如果我这样做,testbool_holder.state 总是报告它是真的,不管 testbool 本身是真还是假
我做错了什么?我只是希望班级能够保持 testbool 的最新值,但我不知道如何实现这一点。谢谢
【问题讨论】:
-
如果你真的想要这些语义,至少使用参考。
-
state将始终是一个非空指针,因此测试为true;你需要*state。 -
如果您想要一种更标准的方式来保存(任何类型的)指针,请查看
std::unique_ptr。要创建它,例如std::unique_ptr<bool> testbool_holder{new bool{false}};并对其进行测试,例如if (*testbool_holder) -
@JoachimPileborg 测试持有者并不拥有该布尔值。
-
还有,为什么要使用指针而不是引用?