我有这个例外: 将无效参数传递给认为无效参数致命的函数。
我使用这个代码:
std::list<sf::Vector2f> snakeSegments;
head.setSize(sf::Vector2f(squareSize, squareSize));
head.setFillColor(sf::Color::Green);
head.setPosition(squareSize * 10, squareSize * 5);
snakeSegments.push_back(head.getPosition());
newSegment.setSize(sf::Vector2f(squareSize, squareSize));
newSegment.setFillColor(sf::Color::Green);
newSegment.setPosition(snakeSegments.front()); // set the new segment's position to be the same as the head's position
snakeSegments.push_back(newSegment.getPosition());
//...
if (!snakeSegments.empty())
{
for (auto it = std::next(snakeSegments.begin()); it != snakeSegments.end(); ++it)
{
if (it != snakeSegments.begin() && head.getPosition() == *it)
{
head.setPosition(squareSize * roomW, squareSize * roomH);
snakeSegments.clear();
snakeSegments.push_back(head.getPosition());
//...
}
我得到未定义的行为
我试着查看 next() 函数的代码,希望弄清楚问题是否可以通过使用不同的容器(如双端队列或其他容器)来解决(比如问题是我无法使用递增列表++,所以我可以使用其他一些容器,它可以通过 ++ 递增来工作。我不认为我可以。)但这似乎不起作用。
除此之外我没有尝试太多。