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 .........
我想编写类上下文的当前值
如何解决此问题。
答案 0 :(得分:0)
在此代码中m_dynamic和m_context对象彼此独立。 m_context尝试写入的值不是m_dynamic的值。
你应该只创建一个&#34; context&#34;宾语。你会打电话给&#34;移动&#34;功能来自&#34; context&#34;对象
m_context.move();
m_context.valueWrite();
并渲染。