Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何访问动态变量_C++_Inheritance_Sfml - Fatal编程技术网

C++ 如何访问动态变量

C++ 如何访问动态变量,c++,inheritance,sfml,C++,Inheritance,Sfml,----------------不同类别--------------- 当我运行main的这个程序时,我的spr位置每次都是相同的。 控制台=300 我想写类上下文的当前值 如何解决此问题。在此代码中,m_动态对象和m_上下文对象相互独立。m_context尝试写入的值不是m_dynamic的值 您应该只创建一个“上下文”对象。您将从“context”对象调用“move”函数 也要渲染。我不清楚你在问什么。您是否希望m_context和m_dynamic共享相同的状态?是的,当我按下向下键spr

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

当我运行main的这个程序时,我的spr位置每次都是相同的。 控制台=300

我想写类上下文的当前值


如何解决此问题。

在此代码中,m_动态对象和m_上下文对象相互独立。m_context尝试写入的值不是m_dynamic的值

您应该只创建一个“上下文”对象。您将从“context”对象调用“move”函数


也要渲染。

我不清楚你在问什么。您是否希望
m_context
m_dynamic
共享相同的状态?是的,当我按下向下键spr position change时。但是valueWrite函数每次都是一样的。İ要更改此位置函数值写入。对不起,我的英语不好。我希望你能理解我看到的意思,你在继承逻辑方面有问题。您可能需要查看以下内容:
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();        
}
m_context.move();
m_context.valueWrite();