На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> переопределение типа "class" , чушь какая-то...
    Вот код:
    ExpandedWrap disabled
      #include <map>
      #include "pugixml.hpp"
       
      class Settings
      {
      public:
          void loadConfig(std::string filename)
          {
              pugi::xml_document config;
              config.load_file(filename.c_str());
              if (pugi::xml_node root = config.child("OiHotkeyConfig"))
              {
                  loadFonts(root.child("Fonts"));
              }
          };
          HFONT getFont(std::wstring name)
          {
              return fonts[name];
          };
      private:
          std::map<std::wstring, HFONT> fonts;
          void loadFonts(pugi::xml_node fontsNode)
          {
              if (fontsNode)
                  for (pugi::xml_node font = fontsNode.child("Font"); font; font = font.next_sibling())
                  {
                      HFONT curFont = CreateFont(font.attribute("height").as_int(),
                                                 font.attribute("width").as_int(),
                                                 0,
                                                 0,
                                                 font.attribute("weight").as_int(),
                                                 font.attribute("italic").as_bool(),
                                                 font.attribute("underline").as_bool(),
                                                 font.attribute("strikeout").as_bool(),
                                                 DEFAULT_CHARSET,
                                                 OUT_DEFAULT_PRECIS,
                                                 CLIP_DEFAULT_PRECIS,
                                                 DEFAULT_QUALITY,
                                                 DEFAULT_PITCH|FF_DONTCARE,
                                                 (LPCWSTR)font.attribute("face").value()
                                                 );
                      fonts[pugi::as_utf16(font.attribute("name").value())]=curFont;
       
                  }
          };
      };

    Компилятор(VC++ 2008) ругается на объявление класса:
    Цитата
    d:\мое\programming\viewer\viewer\src\settings.h(5) : error C2011: Settings: переопределение типа "class"

    Что это значит? и что делать?
      а компилятор так и пишет сообщения на русском?
      скорее всего он имеет в виду - что Settings уже объявлен
        Цитата miksayer @
        Компилятор(VC++ 2008) ругается на объявление класса:

        концовку файла pugixml покажи, плз. :)
          Цитата Twilight @
          а компилятор так и пишет сообщения на русском?

          Может и на руском писать в русской студии
            концовка pugixml.hpp:
            ExpandedWrap disabled
                  template <typename Predicate> inline xml_node xml_node::find_node(Predicate pred) const
                  {
                      if (!empty())
                          for (xml_node node = first_child(); node; node = node.next_sibling())
                          {
                              if (pred(node))
                                  return node;
                              
                              if (node.first_child())
                              {
                                  xml_node found = node.find_node(pred);
                                  if (found) return found;
                              }
                          }
               
                      return xml_node();
                  }
              }
               
              #endif


            Цитата Twilight @
            а компилятор так и пишет сообщения на русском?

            да, студия русская

            Цитата Twilight @
            скорее всего он имеет в виду - что Settings уже объявлен

            нет, это не так :)
              miksayer, запяточие перед #endif поставь. :)
                блин, сколько раз уже на эти грабли наступал:
                ExpandedWrap disabled
                  #ifndef SETTINGS_INCLUDED
                  #define SETTINGS_INCLUDED
                  ....
                  #endif

                отсюда и эта ошибка
                всем спасибо, вопрос решен

                Добавлено
                Flex Ferrum, да не в этом проблема, как оказалось :)

                Добавлено
                т.е. я включал Settings.h в несколько файлов и такая вот фигня получилась
                  Цитата miksayer @
                  Flex Ferrum, да не в этом проблема, как оказалось :)

                  И в этом тоже, я думаю.
                    Цитата miksayer @
                    Компилятор(VC++ 2008) ругается на объявление класса:
                    Цитата
                    d:\мое\programming\viewer\viewer\src\settings.h(5) : error C2011: Settings: переопределение типа "class"

                    Что это значит? и что делать?

                    Цитата

                    Compiler Error C2011
                    Error Message
                    'identifier' : 'type' type redefinition
                    The identifier was already defined as type. You may also get C2011 if you import a type library more than once into the same file.


                    Выводы делай сам.

                    Еще есть #pragma once.
                    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0713 ]   [ 15 queries used ]   [ Generated: 6.11.25, 22:42 GMT ]