переопределение типа "class"
, чушь какая-то...
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.141] |
|
|
переопределение типа "class"
, чушь какая-то...
|
Сообщ.
#1
,
|
|
|
|
Вот код:
![]() ![]() #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" Что это значит? и что делать? |
|
Сообщ.
#2
,
|
|
|
|
а компилятор так и пишет сообщения на русском?
скорее всего он имеет в виду - что Settings уже объявлен |
|
Сообщ.
#3
,
|
|
|
|
Цитата miksayer @ Компилятор(VC++ 2008) ругается на объявление класса: концовку файла pugixml покажи, плз. |
|
Сообщ.
#4
,
|
|
|
|
Цитата Twilight @ а компилятор так и пишет сообщения на русском? Может и на руском писать в русской студии |
|
Сообщ.
#5
,
|
|
|
|
концовка pugixml.hpp:
![]() ![]() 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 уже объявлен нет, это не так |
|
Сообщ.
#6
,
|
|
|
|
miksayer, запяточие перед #endif поставь.
|
|
Сообщ.
#7
,
|
|
|
|
блин, сколько раз уже на эти грабли наступал:
![]() ![]() #ifndef SETTINGS_INCLUDED #define SETTINGS_INCLUDED .... #endif отсюда и эта ошибка всем спасибо, вопрос решен Добавлено Flex Ferrum, да не в этом проблема, как оказалось Добавлено т.е. я включал Settings.h в несколько файлов и такая вот фигня получилась |
|
Сообщ.
#8
,
|
|
|
|
Цитата miksayer @ Flex Ferrum, да не в этом проблема, как оказалось ![]() И в этом тоже, я думаю. |
|
Сообщ.
#9
,
|
|
|
|
Цитата 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. |