Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Амбигус между char и bool - C++

25.11.2014, 18:17. Просмотров 178. Ответов 5
Метки нет (Все метки)

C:\Projects\Test\Test\test.cpp|36|error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' and 'char')|
на строку
C++
1
Stream<<*p;
, где
C++
1
char *p;
, выше
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
        std::ofstream                 &operator <<                                            (      std::ofstream    &Stream          ,
                                                                                                     bool              Flag            )
{
 if (Flag)
 {
  Stream<<"true";
 }
 else
 {
  Stream<<"false";
 }
 return Stream;
}
. Если убрать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
        std::ofstream                 &operator <<                                            (      std::ofstream    &Stream          ,
                                                                                                     bool              Flag            )
{
 if (Flag)
 {
  Stream<<"true";
 }
 else
 {
  Stream<<"false";
 }
 return Stream;
}
, то еэйси. Как исправить?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2014, 18:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Амбигус между char и bool (C++):

Char заменить на bool - C++
добрый день, вот недавно стало интересно возможно ли вместо char применить тип данных bool,просто решил освежить свою память на типы данных...

bool + int + char в одну переменную - C++
Подскаждите кто может, как три разных значения, к примеру : &quot;ВАСЯ&quot;, 123, false закинуть в область памяти, на которую указывает...

Можно ли в С++ создать матрицу, строки которой имеют разный тип (например, 1-я строка - bool, 2-я - char)? - C++
:p Привет всем. У меня такой вот &quot;тупой&quot; вопрос. Можно ли в С++ создать матрицу например 2 на 8 где первая строка имеет тип bool а вторая...

Напишите функцию bool IsDigit(unsigned char c), определяющую, является ли данный символ цифрой или нет - C++
Я начинающий в С++, помогите пожалуйста с задачей: Напишите функцию bool IsDigit(unsigned char c), определяющую, является ли данный символ...

Не понятный амбигус - C++
//================================================================================================= namespace Longs { class...

В чем разница между char* и char[]? - C++
Доброго времени суток, наткнулся на одну загвоздку есть такой кусок кода int _tmain(int argc, _TCHAR* argv) { char *a =...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3826 / 2084 / 532
Регистрация: 18.10.2014
Сообщений: 3,699
25.11.2014, 18:39 #2
Цитата Сообщение от taras atavin Посмотреть сообщение
Как исправить?
Перед тем, как гадать на тему "как исправить", надо сначала выяснить, с кем тут возникло ambiguity. Кто еще-то значится в списке кандидатов?
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2014, 18:47  [ТС] #3
Есть ещё
C++
1
std::ofstream &operator << (std::ofstream &Stream, const std::wstring &String);
,
C++
1
std::ofstream &operator << (std::ofstream &Stream, const wchar_t *String);
,
C++
1
#include <iostream>
и
C++
1
#include <fstream>
. Но не однозначность исчезает если убрать только перегруженный оператор для bool, этого достаточно, но мне нежна эта версия оператора.
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,416
Записей в блоге: 3
Завершенные тесты: 1
25.11.2014, 19:19 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
А std::boolalpha не подойдет?
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3826 / 2084 / 532
Регистрация: 18.10.2014
Сообщений: 3,699
25.11.2014, 20:19 #5
Цитата Сообщение от taras atavin Посмотреть сообщение
Но не однозначность исчезает если убрать только перегруженный оператор для bool, этого достаточно, но мне нежна эта версия оператора.
Я не совсем понимаю сути вопроса. У стандартных потоков уже есть перегруженная версия оператора для 'bool'. То есть эта версия уже занята. "Захватить" ее под себя, т.е. перекрыть своей версией - невозможно. Такой возможности в С++ нет. Напишете еще один оператор для 'bool' - получите ambiguity.
0
Croessmah
Эксперт CЭксперт С++
13226 / 7498 / 845
Регистрация: 27.09.2012
Сообщений: 18,416
Записей в блоге: 3
Завершенные тесты: 1
26.11.2014, 03:53 #6
Ну, как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct X
{
    explicit X ( bool val ) : value ( val ) {}
    operator bool () {return value;}
    bool value ;
} ;
 
 
std::ostream & operator<< ( std::ostream & stream , X value )
{
    if ( value )
        stream << "value - true" ;
    else
        stream << "value - false" ;
    return stream ;
}
 
 
//...
    std::cout << X(true) << std::endl ;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2014, 03:53
Привет! Вот еще темы с ответами:

Разница между char и signed char - C++
Не понимаю в чем разница между char и signed char, ведь char по умолчанию знаковый. Не комплилируется следующий фрагмент кода: void...

В чем разница между char* и char ** - C++
в чем разница между char* и char ** ??

не работает bool xor(bool a, bool b) - C++
Учусь по &quot;Базовому курсу&quot; Герберта Шилда #include &lt;iostream&gt; bool xor(bool a, bool d); int main() { bool p, q; cout...

Сформировать массив типа bool из массива типа char - C++
Доброго времени суток! После ввода элементов массива вылазит ошибка &quot;Необработанное исключение: System.NullReferenceException ... &quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.11.2014, 03:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru