【问题标题】:error C2440: '=' : cannot convert from 'bool' to 'bool *'错误 C2440:“=”:无法从“布尔”转换为“布尔 *”
【发布时间】:2011-02-25 17:26:06
【问题描述】:

我在“b = true”这一行收到错误消息。现在为什么我会收到这个错误?我不是指向 TurnMeOn 并因此说 TurnMeOn = true 吗?

class B{
void turnOn(bool *b){b = true}
};

int main(){
B *b = new B();
bool turnMeOn = false;
b->turnOn(&turnMeOn);
cout << "b = " << turnMeOn << endl;
}

【问题讨论】:

  • 你到处使用指针有什么原因吗?什么是动态分配的bturnOn 应该参考。 (turnOn(0) 是做什么的?)你不想要变量的地址,你想要变量本身的别名。

标签: c++ class pointers boolean


【解决方案1】:
b->turnOn(&turnMeOn);

   *b = true;

【讨论】:

  • 我想指出,这里通过指针传递使调用代码比其他一些 cmets 建议的通过引用传递更具可读性。
【解决方案2】:

turnOn 需要一个指向 bool 的指针作为参数。您将其用作实际的bool。我猜您正在寻找参考,即 bool&amp; b 作为您方法中的参数声明。

【讨论】:

  • +1:在这种情况下,参考可能是最好的方法。
【解决方案3】:

没有。正如您所写,它需要是*b = true

或者,您可以编写函数以将 reference 引用到 bool,以便

void turnOn(bool &b) { b = true; }

应该是正确的。

【讨论】:

    猜你喜欢
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多