Почему я получаю ошибку, не совпадающую с оператором ^

Я получаю ошибку

10:13: error: no match for 'operator^' (operand types are 'std::basic_ostream<char>' and 'int')
10:13: note: candidates are:
In file included from /usr/include/c++/4.9/ios:42:0,
from /usr/include/c++/4.9/ostream:38,
from /usr/include/c++/4.9/iostream:39,
from 2:
/usr/include/c++/4.9/bits/ios_base.h:161:3: note: std::_Ios_Iostate std::operator^(std::_Ios_Iostate, std::_Ios_Iostate)
operator^(_Ios_Iostate __a, _Ios_Iostate __b)
^

код

// Example program
#include <iostream>
#include <string>

int main()
{
int a=1;
int b=2;

std::cout<<a^b;
}

Какие операнды можно использовать с operator ^ ?

2

Решение

Согласно Приоритет оператора, operator<< имеет более высокий приоритет, чем operator^, Так std::cout<<a^b; эквивалентно (std::cout<<a)^b;; (std::cout<<a) вернусь std::cout по ссылке, которая является std::basic_ostream<char>; Как и в сообщении об ошибке, вы не можете позвонить operator^ с std::cout(std::basic_ostream<char>) а также int,

Вы можете использовать скобки, чтобы указать приоритет, как операнды должны быть связаны с операторами.

std::cout << (a^b);
//           ~   ~
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector