[英]C++ pointer to boolean value
我在尝试实现包含指向布尔值的指针的类时遇到问题...
class BoolHolder {
public:
BoolHolder(bool* _state);
bool* state;
}
BoolHolder::BoolHolder(bool* _state) {
state = _state;
}
bool testbool = false;
BoolHolder testbool_holder( &testbool );
如果执行此操作,则无论testbool本身是true还是false,testbool_holder.state都会始终报告它为true。
我究竟做错了什么? 我只是希望该类能够维护testbool的最新值,但我不知道如何实现这一点。 谢谢
如果状态不是空指针,则testbool_holder.state
返回true
*(testbool_holder.state)
返回state指向的布尔值
试试这个以获得更多的C ++解决方案
class BoolHolder
{
public:
BoolHolder(bool* state) : state(state) {}
bool GetState() const { return *state; } // read only
bool& GetState() { return *state; } // read/write
private:
bool* state;
}
bool testbool = false;
BoolHolder testbool_holder(&testbool);
if (testbool_holder.GetState()) { .. }
如果只希望允许读取访问,则删除第二个getter(并且可以将指针更改为const bool *
)。 (这是因为读/写不能用于读取const对象)。
这是正确的。 您所拥有的不是布尔值,而是指向布尔的指针。 您必须取消引用指针以获得布尔值本身。 由于您有一个指针,它将包含一个整数地址。 由于在C和C ++中,所有非零整数都是true,因此您将得到true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.