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

Ошибка cout<<< - C++

Восстановить пароль Регистрация
 
Oleg_Brovko
 Аватар для Oleg_Brovko
8 / 8 / 1
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 16:51     Ошибка cout<<< #1
Не пойму в чем проблема... во втором cout<< ошибку выдает. Кто-то может дать объяснить почему?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
template <class T>
T div(T x, T y) 
{
    return x/y;
}
 
int main()
{
    cout<<div(5.0, 3.0)<<endl;
    cout<<div(5, 3)<<endl;
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2013, 16:51     Ошибка cout<<<
Посмотрите здесь:

Ошибка при работе с cin и cout C++
C++ Ошибка на cout и cin
cout.setf и cout.precision C++
C++ Ошибка компиляции cout
C++ в строке cout«num[t][i]; ошибка как исправить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
23.01.2013, 16:52     Ошибка cout<<< #2
Цитата Сообщение от Oleg_Brovko Посмотреть сообщение
ошибку выдает
какую?
Oleg_Brovko
 Аватар для Oleg_Brovko
8 / 8 / 1
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 16:53  [ТС]     Ошибка cout<<< #3
Ошибки такие:
Кликните здесь для просмотра всего текста
1>------ Build started: Project: STL_templateFunctions, Configuration: Debug Win32 ------
1> main.cpp
1>d:\progects\с++\2013\stl_ammeral\stl_templatefunctions\stl_templatefunctions\main.cpp(14): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'div_t' (or there is no acceptable conversion)
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(679): could be 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(726): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(764): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(811): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(937): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const signed char *)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(944): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,signed char)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(951): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const unsigned char *)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(958): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,unsigned char)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(968): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>,div_t>(std::basic_ostream<_Elem,_Traits> &&,_Ty)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ty=div_t
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(1085): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const std::error_code &)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(186): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ostream<_Elem,_Traits> &(__cdecl *)(std::basic_ostream<_Elem,_Traits> &))'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(192): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(199): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::ios_base &(__cdecl *)(std::ios_base &))'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(206): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::_Bool)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(226): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(short)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(260): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned short)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(280): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(int)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(305): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned int)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(325): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(345): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned long)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(366): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(__int64)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(386): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(unsigned __int64)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(407): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(float)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(427): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(double)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(447): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(long double)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(467): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(const void *)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(487): or 'std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_streambuf<_Elem,_Traits> *)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> while trying to match the argument list '(std::ostream, div_t)'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
23.01.2013, 16:53     Ошибка cout<<< #4
вот так ошибки не будет:
C++
1
cout<<div(5., 3.)<<endl;
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
23.01.2013, 16:53     Ошибка cout<<< #5
оно не знает, чем точно являются 5 и 3
C++
1
cout<<div<int>(5, 3)<<endl;
Oleg_Brovko
 Аватар для Oleg_Brovko
8 / 8 / 1
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 16:57  [ТС]     Ошибка cout<<< #6
ОООО! Стоило лишь прочитать ошибку. Извините за глупость!

Добавлено через 3 минуты
А вот так работает. Хм... интересно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
template <class T>
T d(T x, T y) 
{
    return x/y;
}
 
int main()
{
    cout<<d(5.0, 3.0)<<endl;
    cout<<d(5, 3)<<endl;
 
    return 0;
}
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
23.01.2013, 17:01     Ошибка cout<<< #7
Ну и зачем ты всю портянку привел??
он же ясно пишет
Цитата Сообщение от Oleg_Brovko Посмотреть сообщение
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'div_t' (or there is no acceptable conversion)
Ошибка C2679: бинарный '<<': не найден оператор, который принимает правый операнд типа 'div_t "(или нет приемлемого преобразования)
т.е он не знает что за тип у 5, 3
то ли int, то ли char, то ли еще что
Oleg_Brovko
 Аватар для Oleg_Brovko
8 / 8 / 1
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 17:04  [ТС]     Ошибка cout<<< #8
Цитата Сообщение от ValeryS Посмотреть сообщение
Ну и зачем ты всю портянку привел??
он же ясно пишет



т.е он не знает что за тип у 5, 3
то ли int, то ли char, то ли еще что
Ок. А почему, когда я поменял название функции, ошибка пропала? Извините, если спрашиваю тривиальные вещи.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
23.01.2013, 17:05     Ошибка cout<<< #9
Цитата Сообщение от Oleg_Brovko Посмотреть сообщение
А вот так работает.
чето не уловил
В чем разница
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
23.01.2013, 17:06     Ошибка cout<<< #10
Цитата Сообщение от ValeryS Посмотреть сообщение
т.е он не знает что за тип у 5, 3
то ли int, то ли char, то ли еще что
Как он может не знать, если это 100% int? У автора, похоже, какая-то проблема с именем функции.

Oleg_Brovko, а так работает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
template <class T>
T div(T x, T y) 
{
    return x/y;
}
 
int main()
{
    std::cout<<div(5.0, 3.0)<<std::endl;
    std::cout<<div(5, 3)<<std::endl;
 
    return 0;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
23.01.2013, 17:06     Ошибка cout<<< #11
Oleg_Brovko, т.к. вы кидаете все функции из std в глобальные, наверняка переопределяете существующую стандартную функцию std::div.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
23.01.2013, 17:07     Ошибка cout<<< #12
Цитата Сообщение от Oleg_Brovko Посмотреть сообщение
А почему, когда я поменял название функции
а все врубился
div может быть зарегистрированной функцией и вызывалась не твоя а другая
Oleg_Brovko
 Аватар для Oleg_Brovko
8 / 8 / 1
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 17:07  [ТС]     Ошибка cout<<< #13
Цитата Сообщение от ValeryS Посмотреть сообщение
чето не уловил
В чем разница
Просто название функции з div на d поменял и заработало... ???? Почему так? Не пойму.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
23.01.2013, 17:08     Ошибка cout<<< #14
Цитата Сообщение от Schizorb Посмотреть сообщение
Как он может не знать, если это 100% int?
т.е char 5 быть не может?
Oleg_Brovko
 Аватар для Oleg_Brovko
8 / 8 / 1
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 17:08  [ТС]     Ошибка cout<<< #15
ValeryS, спасибо!
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
23.01.2013, 17:09     Ошибка cout<<< #16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
namespace mystd
{
    template <class T>
    T div(T x, T y)
    {
        return x/y;
    }
}
 
int main()
{
    cout<<mystd::div(5, 3)<<endl;
 
    return 0;
}
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
23.01.2013, 17:11     Ошибка cout<<< #17
Цитата Сообщение от ValeryS Посмотреть сообщение
т.е char 5 быть не может?
компилятор определяет тип этого литерала как int.

А конфликт был, похоже, с этой функцией: http://www.richelbilderbeek.nl/CppDiv.htm
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
23.01.2013, 17:12     Ошибка cout<<< #18
Schizorb, интересен момент, что эта функция есть как и в std, так и в глобальном пространстве. Сейчас проверил, без using namespace std; или при ::div та же ошибка.

Вот еще вариантик:
C++
1
div<>(5, 3)
Oleg_Brovko
 Аватар для Oleg_Brovko
8 / 8 / 1
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 17:13  [ТС]     Ошибка cout<<< #19
Цитата Сообщение от Schizorb Посмотреть сообщение
Как он может не знать, если это 100% int? У автора, похоже, какая-то проблема с именем функции.

Oleg_Brovko, а так работает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
template <class T>
T div(T x, T y) 
{
    return x/y;
}
 
int main()
{
    std::cout<<div(5.0, 3.0)<<std::endl;
    std::cout<<div(5, 3)<<std::endl;
 
    return 0;
}
Действительно, проблема в ф-ции. Но Ваш вариант не работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2013, 17:24     Ошибка cout<<<
Еще ссылки по теме:

В чем разница std::cout и просто cout? C++
Ошибка 2 error C2065: cout: необъявленный идентификатор C++
C++ Странная ошибка (зависимость от cout)

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

Или воспользуйтесь поиском по форуму:
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
23.01.2013, 17:24     Ошибка cout<<< #20

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Сейчас проверил, без unsing namespace std; или при ::div та же ошибка.
хм... а gcc нормально скомпилировал без using



Добавлено через 8 минут

Не по теме:

А, вру я все) gcc компилирует, только если cstdlib не подключать

Yandex
Объявления
23.01.2013, 17:24     Ошибка cout<<<
Ответ Создать тему
Опции темы

Текущее время: 05:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru