На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Ошибки компилирования Visual studio 2010 , error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "void"
    С++ начал токо изучать по книги и при попытке напечать один из примеров выдала Visual Studio 2010 выдал ошибку и скомпилировать не смог.
    Ошибка - error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "void"
    На одном из форумов в инете, нашел похожую проблему у человека с такой же ошибкой, правда код программы тама другой.
    Цитата groundhog

    Объясню, что написл Slip - cout не перегружен для работы с void-типами, и это нормально, это в логике вещей, нельзя вывести то, чего нет. А твоя функция возвращает void тип, который ты и пытаешься вывести. Следовательно, чтобы убрать эту ошибку нужно вызывать твою функцию вне cout;

    И сообственно как мне сделать так что бы эта тестовая программа у меня заработала?
    ExpandedWrap disabled
      #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 ==========
    Сообщение отредактировано: FIZy -
      Ну, так убери эту строчку, и оставь только вызовы функций
      ExpandedWrap disabled
        cout << student1.displayInstitutName() << student2.displayInstitutName() << endl; //здесь ошибка

      Или перепиши displayInstitutName, что бы она ничего не выводила и возвращала результат в basic_string
        И вправду убрал тип void у displayInstitutName и сказал возратить значение)
        ExpandedWrap disabled
              string displayInstitutName()
              {   return getInstitutName(); }

        2B.V. Спасибо)

        Добавлено
        Хотя в идеале наверное лучше так.
        ExpandedWrap disabled
          #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;
          }
        Сообщение отредактировано: FIZy -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0.0916 ]   [ 16 queries used ]   [ Generated: 28.04.26, 08:26 GMT ]