2013-02-03 63 views
0

有是具有文本成員的類中的一類,但給了我這些錯誤:班級不被認可?

Error 1 error C2146: syntax error : missing ';' before identifier 'text'  
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

他們都是對結構菜單項中的行文本的文本。

這裏是Menu.h:這是那裏的菜單項是

#pragma once 

#include <SFML/Window.hpp> 
#include <SFML/Graphics.hpp> 
#include <Source/Text/Text.h> 
#include <list> 

class Menu { 

    public: 
     static enum MenuResult { Exit, Options, Back, ChangeResolution, Play, Nothing }; 

     MenuResult showMMenu(sf::RenderWindow &window); 
     MenuResult showOMenu(sf::RenderWindow &window); 
     MenuResult highlightButton(MenuResult menuresult); 

     struct MenuItem { 
      public: 
       Text text; 
       sf::FloatRect buttonrect; 
       static void highlightRectOutline(sf::RenderWindow &window, Text text, sf::Color color); 
       MenuResult action; 
     }; 

    private: 
     MenuResult getMenuResponse(sf::RenderWindow &window); 
     MenuResult handleClick(int x, int y); 
     MenuResult handleButtonHover(sf::RenderWindow &window, int x, int y); 
     std::list<MenuItem> menuItems; 

}; 

Text.h:這是菜單項得到它文本。

#pragma once 

#include <SFML/Window.hpp> 
#include <SFML/Graphics.hpp> 

enum style { bold, italic, underlined }; 

class Text { 

    public: 
     void create(sf::RenderWindow &window, 
        char* string, 
        char* fontpath, 
        float positionx, 
        float positiony, 
        unsigned int size, 
        style textstyle, 
        sf::Color color); 

     sf::FloatRect getRect(); 
     static float getHeight(); 
     static float getWidth(); 

     bool operator==(Text t); 
     bool operator!=(Text t); 

     void setString(sf::RenderWindow &window, char* string); 
     sf::String getString(); 

     void setFont(sf::RenderWindow &window, char* fontpath); 
     sf::Font getFont(); 

     void setPosition(sf::RenderWindow &window, float x, float y); 
     static sf::Vector2f getPosition(); 

     void setScale(sf::RenderWindow &window, float x, float y); 
     sf::Vector2f getScale(); 

     void setColor(sf::RenderWindow &window, int red, int green, int blue, int alpha); 
     sf::Vector3i getColor(); 

    private: 
     static sf::Text text; 
     sf::Font font; 
}; 
+0

這是完整的代碼?你有沒有在頭文件之間建立循環依賴關係? –

回答

1

這條線,在Text.h

static sf::Text text; 

Text沒有在sf命名空間被宣佈,故有此名不存在。

它應該是:

static Text text; 
+0

這是因爲我需要在類中使用sf :: Text中的函數。這就是爲什麼它與sf :: font分組。 – Tetramputechture

+0

@Tetramputechture:據我所知,你不包括'sf :: Text'的頭文件(除非它碰巧被你的其他SFML包含),只是「Source/Text/Text.h 「,我認爲這是你自己的」文本「類。 – sheu

+0

我是。圖形包括文本。如果我沒有,我會得到這個錯誤。 – Tetramputechture