我的主函数检查是否已触发某个键,如果它是左箭头/右箭头,则调用我创建的名为Game的对象中的函数。 当代码到达Game中的函数时,会出现“访问冲突读取位置”错误。
这是我的主要功能:
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "PongZzZZzzZ");
Ball *b = new Ball();
Paddle *p = new Paddle();
Game *game = new Game(&window, b, p);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
game->ParseKey('r');
else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
game->ParseKey('l');
}
window.clear(sf::Color::White);
window.draw(*p);
window.display();
}
return 0;
}
这是我在游戏中的功能:
void Game::ParseKey(char dir)
{
if (dir == 'r' && (this->p->GetPosition().x + this->p->getSize().x) < 795)
{
std::cout << "right key fired";
}
else if (dir == 'l' && (this->p->getPosition().x) > 5)
{
std::cout << "left key fired";
}
}
我知道问题是当我尝试获取向量并获取x时:
this->p->GetPosition().x
我尝试获取矢量并且它有效,但是当我尝试获取'x'时它会崩溃。