Мне нужна помощь с этим огр-зависимым заголовком (Qgears) - PullRequest
0 голосов
/ 01 марта 2010

Я 2 ошибки от компиляции Qgears. (Взломанная версия Final Fantasy VII Engine)

Я перепутал с препроцессорами, чтобы загрузить фактическое местоположение заголовочных файлов ogre.

Вот ошибки:

||=== qgears, Debug ===|
/home/cj/Desktop/qgears/trunk/project/linux/src/core/TextManager.h|48|error: invalid use of ‘::’|
/home/cj/Desktop/qgears/trunk/project/linux/src/core/TextManager.h|48|error: expected ‘;’ before ‘m_LanguageRoot’|
||=== Build finished: 2 errors, 0 warnings ===|

Вот заголовочный файл:

// $Id$

#ifndef TEXT_MANAGER_h
#define TEXT_MANAGER_h

#include <OGRE/OgreString.h>
#include <OGRE/OgreUTFString.h>
#include <map>

struct TextData
{
    TextData():
        text(""),
        width(0),
        height(0)
    {
    }

    Ogre::String        name;
    Ogre::UTFString     text;
    int                 width;
    int                 height;
};

typedef std::vector<TextData> TextDataVector;



class TextManager
{
public:
                          TextManager(void);
    virtual              ~TextManager(void);

    void                  SetLanguageRoot(const Ogre::String& root);

    void                  LoadTexts(const Ogre::String& file_name);
    void                  UnloadTexts(const Ogre::String& file_name);
    const TextData        GetText(const Ogre::String& name);

private:
    struct TextBlock
    {
        Ogre::String          block_name;
        std::vector<TextData> text;
    }

    Ogre::String            m_LanguageRoot;    // Line #48
    std::list<TextBlock>    m_Texts;
};



extern TextManager* g_TextManager;



#endif // TEXT_MANAGER_h

Единственный заголовочный файл, который не включает заголовочный файл ogre, это "map".

Если это поможет, я использую компилятор Code :: Blocks IDE / GCC в GNU / Linux. (Arch) * +1013 *

Я не уверен, даже если я исправлю этот заголовок, я думаю, что у меня будут ошибки сборки позже, но это стоит попробовать.

Редактировать: я добавил точку с запятой, и у меня есть еще одна ошибка в заголовочном файле:

error: expected unqualified-id before ‘{’ token

1 Ответ

0 голосов
/ 01 марта 2010

Это определение структуры TextBlock пропускает ; в конце.

Кроме того, std::vector и std::list используются без соответствующего #include. Если они не включены в какой-либо заголовок, это также может привести к ошибкам сборки.

Редактировать : следующие компиляции с VC и Comeau:

//#include <OGRE/OgreString.h>
//#include <OGRE/OgreUTFString.h>
namespace Ogre {
    struct String { String() {} String(const char*) {} };
    struct UTFString { UTFString() {} UTFString(const char*) {} };
}

#include <map>
#include <vector>
#include <list>

struct TextData
{
    TextData():
        text(""),
        width(0),
        height(0)
    {
    }

    Ogre::String        name;
    Ogre::UTFString     text;
    int                 width;
    int                 height;
};

typedef std::vector<TextData> TextDataVector;



class TextManager
{
public:
                          TextManager(void);
    virtual              ~TextManager(void);

    void                  SetLanguageRoot(const Ogre::String& root);

    void                  LoadTexts(const Ogre::String& file_name);
    void                  UnloadTexts(const Ogre::String& file_name);
    const TextData        GetText(const Ogre::String& name);

private:
    struct TextBlock
    {
        Ogre::String          block_name;
        std::vector<TextData> text;
    };

    Ogre::String            m_LanguageRoot;
    std::list<TextBlock>    m_Texts;
};

extern TextManager* g_TextManager;

У вас есть проблемы с компиляцией с помощью вашего компилятора?

...