ошибка C2440: '=': невозможно преобразовать из 'bool' в 'bool *' - PullRequest
1 голос
/ 30 мая 2010

Я получаю указанную ошибку в этой строке "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;
}

Ответы [ 3 ]

8 голосов
/ 30 мая 2010
b->turnOn(&turnMeOn);

и

   *b = true;
5 голосов
/ 30 мая 2010

turnOn требует указатель на bool в качестве параметра. Вы используете это как фактический bool. Я полагаю, вы ищете ссылку, т.е. bool& b как объявление параметра в вашем методе.

4 голосов
/ 30 мая 2010

Нет. Как вы уже написали, это должно быть *b = true.

В качестве альтернативы, вы можете написать функцию для передачи ссылки в bool, чтобы

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

будет правильно.

...