Ошибки компилирования Visual studio 2010
, error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "void"
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.116] |
|
|
Правила раздела Visual C++ / MFC / WTL (далее Раздела)
FAQ Раздела
Обновления для FAQ Раздела
Поиск по Разделу
MSDN Library Online
Ошибки компилирования Visual studio 2010
, error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "void"
|
Сообщ.
#1
,
|
|
|
|
С++ начал токо изучать по книги и при попытке напечать один из примеров выдала Visual Studio 2010 выдал ошибку и скомпилировать не смог.
Ошибка - error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "void" На одном из форумов в инете, нашел похожую проблему у человека с такой же ошибкой, правда код программы тама другой. Цитата groundhog Объясню, что написл Slip - cout не перегружен для работы с void-типами, и это нормально, это в логике вещей, нельзя вывести то, чего нет. А твоя функция возвращает void тип, который ты и пытаешься вывести. Следовательно, чтобы убрать эту ошибку нужно вызывать твою функцию вне cout; И сообственно как мне сделать так что бы эта тестовая программа у меня заработала? ![]() ![]() #include <iostream> #include <string> using namespace std; class studentList { public: //структура studentList (string name) { setInstitutName (name); } //три функции void setInstitutName(string name) { institutName = name; } string getInstitutName() { return institutName; } void displayInstitutName() { cout << getInstitutName() << endl; } private: string institutName; }; int main () { studentList student1 ( "one" ); studentList student2 ( "two" ); cout << student1.displayInstitutName() << student2.displayInstitutName() << endl; //здесь ошибка system("pause"); return 0; } Лог Ошибки ------ Построение начато: проект: firstProgram, Конфигурация: Debug Win32 ------ Построение начато 06.10.2010 1:22:36. InitializeBuildStatus: Обращение к "Debug\firstProgram.unsuccessfulbuild". ClCompile: test.cpp d:\work files\visual studio 2010 c++ files\firstprogram\firstprogram\test.cpp(29): error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "void" (или приемлемое преобразование отсутствует) c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(679): может быть "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)" with [ _Elem=char, _Traits=std::char_traits<char> ] c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(726): или "std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)" with [ .... c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(487): или "std::basic_ostream<_Elem,_Traits> &std::basic_ostream<_Elem,_Traits>::operator <<(std::basic_streambuf<_Elem,_Traits> *)" with [ _Elem=char, _Traits=std::char_traits<char> ] при попытке сопоставить список аргументов "(std::ostream, void)" СБОЙ построения. Затраченное время: 00:00:02.20 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== |
|
Сообщ.
#2
,
|
|
|
|
Ну, так убери эту строчку, и оставь только вызовы функций
![]() ![]() cout << student1.displayInstitutName() << student2.displayInstitutName() << endl; //здесь ошибка Или перепиши displayInstitutName, что бы она ничего не выводила и возвращала результат в basic_string |
|
Сообщ.
#3
,
|
|
|
|
И вправду убрал тип void у displayInstitutName и сказал возратить значение)
![]() ![]() string displayInstitutName() { return getInstitutName(); } 2B.V. Спасибо) Добавлено Хотя в идеале наверное лучше так. ![]() ![]() #include <iostream> #include <string> using namespace std; class studentList { public: //структура studentList (string name) { setInstitutName (name); } //три функции void setInstitutName(string name) { institutName = name; } string getInstitutName() { return institutName; } void displayInstitutName() { cout << getInstitutName(); } private: string institutName; }; int main () { studentList student1 ( "one" ); studentList student2 ( "two" ); student1.displayInstitutName(); student2.displayInstitutName(); system("pause"); return 0; } |