如何访问动态变量

时间:2016-03-03 14:02:40

标签: c++ inheritance sfml

class dynamic
{      
public:        
    dynamic();
    void value();
    void move();
    sf::RectangleShape rs;           
};

dynamic::dynamic()    
{
    rs.setSize(sf::Vector2f(200,200));
    rs.setFillColor(sf::Color::Red);
    rs.setPosition(300, 300)   
};

void dynamic::move()
{
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
    {            
        spr.move(0, 1);           
        value();            
    }
}

void dynamic::value()
{
    return spr.getposition.y
}

----------------不同类---------------

class context : public dynamic {

public:
    void valueWrite();

};

void context::valueWrite(){        

    std::cout << spr.getposition.y;

}

----------------游戏类---------------

class Game {
public:        
    Game();

    void draw();        
    void update();
    void loop();        

    sf::RenderWindow window;

    context m_context;
    dynamic m_dynamic;        
};


game::game(): window(sf::VideoMode(800, 600), "SFML window")    
{

}

void game::loop()
{
    while (window.isOpen())
    {
        update();
        draw();

        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
            {                    
                window.close();
            }
        }
    }
}

void game::draw()
{
    window.clear();
    m_dynamic.render(window);
    window.display();
}

void game::update()    
{
    m_dynamic.move();
    m_context.valueWrite();        
}

当我运行main程序时,我的spr位置是同样的。 控制台= 300 300 300 300 300 .........

我想编写类上下文的当前值

如何解决此问题。

1 个答案:

答案 0 :(得分:0)

在此代码中m_dynamic和m_context对象彼此独立。 m_context尝试写入的值不是m_dynamic的值。

你应该只创建一个&#34; context&#34;宾语。你会打电话给&#34;移动&#34;功能来自&#34; context&#34;对象

m_context.move();
m_context.valueWrite();

并渲染。