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

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

Войти
Регистрация
Восстановить пароль
 
 
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' - C++

25.11.2014, 20:05. Просмотров 1287. Ответов 22
Метки нет (Все метки)

error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' and 'size_t {aka long long unsigned int}')|
на
C++
1
#define LOG(Variable) Log<<"<"; Log<<StripXML(#Variable)<<">"<<std::endl<<"<Bits>x"<<std::dec<<std::noshowbase<<8*sizeof(Variable)<<std::hex<<std::showbase<<"</Bits>"<<std::endl<<"<Line>"<<std::dec<<std::noshowbase<<__LINE__<<std::hex<<std::showbase<<"</Line>"<<std::endl<<"<Adress>"<<(void*)&Variable<<"</Adress>"<<std::endl<<"<Value>"; Log<<Variable<<"</Value>"<<std::endl<<"</"; Log<<StripXML(#Variable)<<">"<<std::endl
. Как исправить?

Добавлено через 1 час 13 минут
Проблема решена, но не понята:
C++
1
#define LOG(Variable) Log<<"<"; Log<<StripXML(#Variable)<<">"<<std::endl<<"<Bits>x"<<std::dec<<std::noshowbase<<8*sizeof(Variable)<<std::hex<<std::showbase<<"</Bits>"<<std::endl<<"<Line>"<<std::dec<<std::noshowbase<<__LINE__<<std::hex<<std::showbase<<"</Line>"<<std::endl<<"<Adress>"<<(void*)&Variable<<"</Adress>"<<std::endl<<"<Value>"; Log<<Variable; Log<<"</Value>"<<std::endl<<"</"; Log<<StripXML(#Variable)<<">"<<std::endl
.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2014, 20:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' (C++):

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

Ошибка на "cout <<" no match for operator operand types are std::basic_ostream char - C++
Немного слов про код.Данный код создан для выдачи номера машины,цвета,марки при предоставлении имени.Знаю,что код можно было написать проще...

ошибка в программе (cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*') - C++
int main() { string fileName, currWord, currMax = &quot;&quot;; cin&gt;&gt;fileName; freopen(fileName, &quot;r&quot;, stdin); while...

Почему возникает ошибка? error: ambiguous overload for 'operator>>' - C++
class planet { protected: double distance; int revolve; public: planet(double d, int r) {distance=d; revolve=r;} };...

Странная перегрузка операторов (Error: ambiguous overload for 'operator[]') - C++
Что-то я туплю. Есть код: #include&lt;string&gt; struct test { int operator(const std::string&amp;)const{return 0;} operator...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...

22
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
26.11.2014, 09:28 #16
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Вот чего я не помню, так это был ли в ней реализованы операторы ввода-вывода для 'unsigned __int64'...
Вот в этом суть вопроса была.

Добавлено через 2 минуты
То есть об вводе/выводе типа size_t должно быть что то сказано в стандарте. Нужно будет поискать.

Добавлено через 2 минуты
Вот здесь http://www.cplusplus.com/reference/cstring/size_t/ сказано, что он
Alias of one of the fundamental unsigned integer types.
Сайт является справочником.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.11.2014, 09:36  [ТС] #17
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Такая VS использовала 'unsigned __int64' в качестве 'size_t'. Это - нестандартный тип.
Мелкомягко-студийный тип разрядности 64 бита зовут hyper.

Добавлено через 1 минуту
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Нет, именно '__int64'. Тип 'hyper' - это тип из каких-то настолько замшелых и покрытых песками памяти версий Visual Studio, что о нем не помнит даже Интернет. Когда существовал тип 'hyper', 64-битный тип 'size_t' был еще не нужен.
Забудь про 'hyper' навсегда. Это было давно и неправда...
Не так уже давно, всего лишь четвёртая версия.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3912 / 2149 / 549
Регистрация: 18.10.2014
Сообщений: 3,756
26.11.2014, 10:21 #18
Цитата Сообщение от Toshkarik Посмотреть сообщение
Сайт является справочником.
cplusplus.com - сравнительно низкокачественный сайт, на котором часто встречаются неточности именно вот в таких деталях. Существенно более уважаемый сайт - cppreference.com - относится к спецификации языка более педантично.

Цитата Сообщение от taras atavin Посмотреть сообщение
Мелкомягко-студийный тип разрядности 64 бита зовут hyper.
Нет, никакого типа 'hyper' в компиляторах C и C++ студии уж давно как нет. Когда то такой тип был, но его уже давно заменили на '__int64'. Причем именно заменили: ни одна студия с тех пор не знает никакого 'hyper'.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
26.11.2014, 10:54 #19
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
cplusplus.com - сравнительно низкокачественный сайт, на котором часто встречаются неточности именно вот в таких деталях. Существенно более уважаемый сайт - cppreference.com - относится к спецификации языка более педантично.
По мне так наоборот. Больше неточностей встречал на cppreference, поэтому считаю cplusplus выше уровнем, он и существует дольше.

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Нет, никакого типа 'hyper' в компиляторах C и C++ студии уж давно как нет.
С Тарасом можно даже не спорить. Бесполезно.
По найденым клочкам, сделал вывод, что вроде этот тип был еще во времена перехода с 16 на 32 битные системы.
0
MrGluck
Модератор
Эксперт CЭксперт С++
7424 / 4539 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
26.11.2014, 11:16 #20
taras atavin, если много где используется xml - советую либу pugixml. Она простая и может быть "one header file".

Добавлено через 33 секунды
И чем не устраивает шаблонная функция?

Добавлено через 3 минуты
Цитата Сообщение от Toshkarik Посмотреть сообщение
Больше неточностей встречал на cppreference, поэтому считаю cplusplus выше уровнем, он и существует дольше.
Да что тут мериться, справочники они и есть справочники. В них полезно быстренько про функцию/контейнер почитать и способ применения посмотреть. В остальном есть только один достоверный источник информации - стандарт, остальное от лукавого. Думаю, все тут с этим согласны.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.11.2014, 11:22  [ТС] #21
Цитата Сообщение от MrGluck Посмотреть сообщение
И чем не устраивает шаблонная функция?
1. О какой функции речь?
2. Энто как функция достучится до имени параметра?

Добавлено через 42 секунды
Цитата Сообщение от MrGluck Посмотреть сообщение
советую либу pugixml.
Зачем?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7424 / 4539 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
26.11.2014, 11:26 #22
Цитата Сообщение от taras atavin Посмотреть сообщение
2. Энто как функция достучится до имени параметра?
Этого сразу не заметил.
Цитата Сообщение от taras atavin Посмотреть сообщение
Зачем?
Для вывода xml.

Можно было бы макрос разделить на несколько строк с помощью \
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.11.2014, 11:38  [ТС] #23
Цитата Сообщение от MrGluck Посмотреть сообщение
Для вывода xml.
Я и так его вывожу.
0
26.11.2014, 11:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2014, 11:38
Привет! Вот еще темы с ответами:

Error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std:: - C++
Здравствуйте! Сразу попрошу прощения за тупой вопрос. Почему при перегрузке operator &lt;&lt; код template&lt;class T&gt; ostream &amp;operator &lt;&lt;...

Чтение бинарного файла в поток std::ifstream и вывод в другой бинарный файл std::ofstream (создание копии) - C++
Проверил работу программы на маленькой картинке(744 байт). Все работает. С несколько бОльшими файлами(512КБ) нет. Суть задачи в том,...

IntelliSense: отсутствует оператор "<<", соответствующий этим операндам типы операндов: std::basic_ostream<char, std::char_traits<char> - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct Stydent { std::string faculty; int rate; ...

C:\Projects\mmz\Compile\CompileAMD64\mmzCompileAMD64\TProjec t.cpp|74|error: declaration of 'std::ofstream File' shadows - C++
error: declaration of 'std::ofstream File' shadows a parameter| std::ofstream File;


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

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