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