0

struct MenuItem で HighlightRectOutline を使用できるようにします。どうすればいいですか?

Text.h

    class Text {

public:
             ....

    void Text::highlightRectOutline(sf::RenderWindow &window, sf::Color color);

    struct MenuItem {
        public:
            Menu::MenuResult action;
    };

HighlightRectOutline:

void highlightRectOutline(sf::RenderWindow &window, sf::Color color) {
    sf::RectangleShape outlineRect;

    sf::Vector2f size(Text::getWidth(), Text::getHeight());

    outlineRect.setSize(size);
    outlineRect.setPosition(Text::getPosition());

    outlineRect.setFillColor(sf::Color::Transparent);

    outlineRect.setOutlineColor(color);
    outlineRect.setOutlineThickness(5);

    window.draw(outlineRect);
}

この機能は固定されています。スクロールダウン Menu.h

class Menu {

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

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

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

};

ハンドルボタンホバー:

Menu::MenuResult Menu::handleButtonHover(sf::RenderWindow &window, Text::menuItem menuItem, int x, int y) {

    sf::Color color(255, 122, 40);

    std::list<Text::MenuItem>::iterator it;

    for(it = menuItems.begin(); it != menuItems.end(); it++)
    {
        sf::floatRect menuItemRect = (*it).getRect();

        if( menuItemRect.contains(x, y)) 
            menuItem.highlightRectOutline(window, color);
    }

    return Nothing;

}

これは getRect または menuItem を使用できません。

助けていただければ幸いです。

4

1 に答える 1

0

すでに述べたsftrabbitのようにサブクラスではないことは別として、基本クラスのメソッドを保護されていると宣言する必要があります。そのようにして、それらはサブクラスに表示されます。

于 2013-02-04T11:16:15.227 に答える