На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Компилятор не в себе , глючит.. выдаёт ошибку там, где её быть не должно
    после попытки компиляции программы в MVisual C++ 2008 Express пишет следующие тупые ошибки:

    Ошибка 1 error C2143: синтаксическая ошибка: отсутствие ";" перед "using"
    что-то я не помню, чтобы перед using namespace std; писался ;

    Ошибка 2 error C2628: недопустимый 'Temperature' с последующим 'void' (возможно, отсутствует ';')
    Ошибка 3 error C2556: Temperature Temperature::set(std::string): перегруженная функция отличается от 'void Temperature::set(std::string)' только возвращаемым типом
    Ошибка 3 error C2371: Temperature::set: переопределение; различные базовые типы
    тут я тоже не пойму в чём у меня могла быть ошибка. вот код:
    ExpandedWrap disabled
       //gradus.h
      #pragma once
       
      #include <iostream>
      #include <string>
      using namespace std;
       
      class Temperature
      {
      private:
          int grad;
          char sys;
      public:
          Temperature(int gr = 0 , char shkala = 'C') : grad(gr) , sys(shkala) {};
          void set( int gr , char shkala)                                      {grad = gr; sys = shkala;};
          void set( string str);
          int change();
          void show();
      }

    ExpandedWrap disabled
      //gradus.cpp
      #include "gradus.h"
       
       
      void Temperature::set(string str)
      {...}
       
      int Temperature::change()
      {...}
       
      void Temperature::show()
      {...}
      При определении класса после } ставят ;
        аа.. сори, не компилятор глючит, а я! вопрос в топку :lol:
        Сообщение отредактировано: Potroshitell -
          Цитата Potroshitell @
          ааа, или возможно просто set - ключевое слово.

          не ключевое, но слово обозначающее контейнер из STL std::set, правда для него требуется заголовок <set> так что дело не в этом
            я ещё вот хотел бы задать 1 мини-вопросик.. ради него наверно не стоит создавать отдельную тему=)
            ExpandedWrap disabled
              class Temperature
              {
              public:
                  Temperature(int gr = 0 , char shkala = 'C') : grad(gr) , sys(shkala) {};
                  void set( int gr , char shkala)                                      {grad = gr; sys = shkala;}  /* вот тут. если функция определяется в классе как
              встроенная, то нужно ставить ; после } ? а то компилятор вроде не ругается в обоих случаях. */
                  ...
            Сообщение отредактировано: Potroshitell -
              Цитата Potroshitell @
              если функция определяется в классе как встроенная, то нужно ставить ; после } ?

              не нужно.
                Цитата
                zim22, не нужно.

                спс!)
                  И это... того... Не пиши "using namespace" в заголовочных файлах, а то это очень "добрый" сюрприз себе на будущее :)
                  Ибо этот юзинг прилетит во все те файлы, куда ты будешь включать свой gradus.h (или любой заголовочник, явно/неявно включающий gradus.h). Очень "весело" ловить ошибки в стиле "код перестал компилиться после добавки одного #include, а ведь больше ничего не менял" или "компилятор не видит метод моего класса"
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0260 ]   [ 16 queries used ]   [ Generated: 26.07.25, 16:47 GMT ]