Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Oleg_Brovko
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
#1

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

23.01.2013, 16:51. Просмотров 1482. Ответов 19
Метки нет (Все метки)

Не пойму в чем проблема... во втором 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;
}

http://www.cyberforum.ru/cpp-beginners/thread1516456.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2013, 16:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка cout<<< (C++):

Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout
Подскажите почему после первого cout программа не останавливается для ввода...

В чем разница std::cout и просто cout?
Ребят ,подскажите на простом языке для чайников . В чем разница std::cout и...

Ошибка компиляции cout
Подскажите пожайлуста где в этой программе ошибка: //Программа расчета суммы...

Ошибка на cout и cin
немогу понять в чем ошибка, есть код программы, вроде бы все правильно...

Странная ошибка (зависимость от cout)
Всем Доброго Времени Суток! В процедуру единицы трансляции передаются по...

19
ValeryS
Модератор
7125 / 5393 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
23.01.2013, 16:52 #2
Цитата Сообщение от Oleg_Brovko Посмотреть сообщение
ошибку выдает
какую?
0
Oleg_Brovko
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 16:53  [ТС] #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 ==========
0
The_bolT
70 / 70 / 12
Регистрация: 22.01.2013
Сообщений: 231
23.01.2013, 16:53 #4
вот так ошибки не будет:
C++
1
cout<<div(5., 3.)<<endl;
0
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
23.01.2013, 16:53 #5
оно не знает, чем точно являются 5 и 3
C++
1
cout<<div<int>(5, 3)<<endl;
1
Oleg_Brovko
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 16:57  [ТС] #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;
}
0
ValeryS
Модератор
7125 / 5393 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
23.01.2013, 17:01 #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, то ли еще что
0
Oleg_Brovko
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 17:04  [ТС] #8
Цитата Сообщение от ValeryS Посмотреть сообщение
Ну и зачем ты всю портянку привел??
он же ясно пишет



т.е он не знает что за тип у 5, 3
то ли int, то ли char, то ли еще что
Ок. А почему, когда я поменял название функции, ошибка пропала? Извините, если спрашиваю тривиальные вещи.
0
ValeryS
Модератор
7125 / 5393 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
23.01.2013, 17:05 #9
Цитата Сообщение от Oleg_Brovko Посмотреть сообщение
А вот так работает.
чето не уловил
В чем разница
0
Schizorb
510 / 462 / 82
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
23.01.2013, 17:06 #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;
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
23.01.2013, 17:06 #11
Oleg_Brovko, т.к. вы кидаете все функции из std в глобальные, наверняка переопределяете существующую стандартную функцию std::div.
0
ValeryS
Модератор
7125 / 5393 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
23.01.2013, 17:07 #12
Цитата Сообщение от Oleg_Brovko Посмотреть сообщение
А почему, когда я поменял название функции
а все врубился
div может быть зарегистрированной функцией и вызывалась не твоя а другая
1
Oleg_Brovko
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 17:07  [ТС] #13
Цитата Сообщение от ValeryS Посмотреть сообщение
чето не уловил
В чем разница
Просто название функции з div на d поменял и заработало... ???? Почему так? Не пойму.
0
ValeryS
Модератор
7125 / 5393 / 669
Регистрация: 14.02.2011
Сообщений: 18,210
23.01.2013, 17:08 #14
Цитата Сообщение от Schizorb Посмотреть сообщение
Как он может не знать, если это 100% int?
т.е char 5 быть не может?
0
Oleg_Brovko
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 17:08  [ТС] #15
ValeryS, спасибо!
0
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
23.01.2013, 17:09 #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;
}
0
Schizorb
510 / 462 / 82
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
23.01.2013, 17:11 #17
Цитата Сообщение от ValeryS Посмотреть сообщение
т.е char 5 быть не может?
компилятор определяет тип этого литерала как int.

А конфликт был, похоже, с этой функцией: http://www.richelbilderbeek.nl/CppDiv.htm
1
MrGluck
Модератор
Эксперт CЭксперт С++
7982 / 4863 / 1424
Регистрация: 29.11.2010
Сообщений: 13,239
23.01.2013, 17:12 #18
Schizorb, интересен момент, что эта функция есть как и в std, так и в глобальном пространстве. Сейчас проверил, без using namespace std; или при ::div та же ошибка.

Вот еще вариантик:
C++
1
div<>(5, 3)
2
Oleg_Brovko
8 / 8 / 5
Регистрация: 07.03.2012
Сообщений: 57
23.01.2013, 17:13  [ТС] #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;
}
Действительно, проблема в ф-ции. Но Ваш вариант не работает.
0
Schizorb
510 / 462 / 82
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
23.01.2013, 17:24 #20

Не по теме:

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



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

Не по теме:

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

0
23.01.2013, 17:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2013, 17:24
Привет! Вот еще темы с решениями:

Ошибка при работе с cin и cout
Здравствуйте, задам детский вопрос: почему не работает? int d; cout &lt;&lt;...

Ошибка C2065 : Необъявленный идентификатор cout
Здравствуйте, друзья. Сразу хочу сказать что в С++ я новичок, поэтому я...

в строке cout«num[t][i]; ошибка как исправить?
в строке cout«num; ошибка #include &lt;iostream&gt; using namespace std; int...

Cout like: перегрузить оператор<< по примеру объекта cout для extern объекта пользовательского типа
Мне нужен extern объект по примеру cout с перегруженным оператором. Я нечто...


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

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

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