我很困惑为什么会收到这个警告,因为我的整个代码中甚至没有枚举吗?
这是我收到的警告:枚举类型 'sf::PrimitiveType' 未被限定。建议使用 'enum class' 而不是 'enum' (Enum.3)。
它在第79行警告我,基本上是在主函数闭合括号后的新行上吗?
#include <SFML/Graphics.hpp>
#include <vector>
using sf::RenderWindow;
using sf::VideoMode;
using sf::Event;
using std::vector;
using sf::Vector2f;
using sf::RectangleShape;
using sf::CircleShape;
using sf::Color;
using sf::Keyboard;
int main()
{
RenderWindow window(VideoMode(720, 640), "Shooter game w Projectiles.");
window.setFramerateLimit(60);
CircleShape player(50.f);
player.setFillColor(Color::White);
player.setPosition((window.getSize().x / 2.f) - (player.getRadius()), (window.getSize().y - player.getRadius() * 2) - 10.f);
CircleShape bullet(5.f);
bullet.setFillColor(Color::Red);
vector<CircleShape> playerBullets;
playerBullets.push_back(bullet);
RectangleShape enemy(Vector2f(30.f, 30.f));
enemy.setFillColor(Color::Magenta);
enemy.setPosition(320, 200);
vector<RectangleShape> enemies;
enemies.push_back(enemy);
enemy.setFillColor(Color::Blue);
enemy.setPosition(160, 100);
enemies.push_back(enemy);
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
{
window.close();
}
}
if (Keyboard::isKeyPressed(Keyboard::Escape))
{
window.close();
}
// Update
Vector2f playerCenter = Vector2f(player.getPosition().x + player.getRadius(), player.getPosition().y + player.getRadius());
// Clear
window.clear();
// Draw
window.draw(player);
for (size_t i = 0; i < enemies.size(); ++i)
{
window.draw(enemies[i]);
}
for (size_t i = 0; i < playerBullets.size(); ++i)
{
window.draw(playerBullets[i]);
}
// Display
window.display();
}
}
这是我收到的警告:枚举类型 'sf::PrimitiveType' 未被限定。建议使用 'enum class' 而不是 'enum' (Enum.3)。
它在第79行警告我,基本上是在主函数闭合括号后的新行上吗?
sf::PrimitiveType
是一个枚举类型。这个警告是正确的。如果你对这种类型的警告不感兴趣,你可以直接禁用它。 - spectras<SFML/Graphics.hpp>
,它已经为你声明了。你不能真正“解决”这个警告,因为那不是你的代码。你可以提交一个错误报告,但他们不会更改它,因为这会破坏其他人的代码。所以最好的选择就是禁用它。 - spectras-isystem
而不是-I
。 - spectras