繁体   English   中英

指向布尔值的C ++指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM