我已经开始使用SFML库为大学课程创建图形战舰游戏,目前我正在创建4个矩形以在窗口周围创建边框(如果有更简单的方法,请告诉我,但我想继续4矩形的想法)
我的问题是我将第一个矩形绘制到屏幕并调试它并且工作正常,但随后我绘制第二个矩阵并抛出以下错误
Unhandled exception at 0x00656A0E (sfml-graphics-d-2.dll) in Battleships.exe: 0xC0000005: Access violation reading location 0x00000004
这是我的代码:
矩形称为a和b(抱歉令人困惑的命名)
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
int main()
{
sf::RenderWindow menu(sf::VideoMode(800, 600), "SFML works!");
sf::RectangleShape a(sf::Vector2f(800, 20));
a.setFillColor(sf::Color::White);
sf::RectangleShape b(sf::Vector2f(20, 600));
b.setFillColor(sf::Color::White);
sf::Font font;
if(!font.loadFromFile("arial.ttf"))
{
std::cout << "ERROR: Cannot load font" << std::endl;
}
sf::Text text("TEST", font, 80);
text.setPosition(sf::Vector2f(400/2.0f,300/2.0f));
text.setColor(sf::Color::White);
menu.clear();
menu.draw(a);
menu.draw(b);
menu.display();
}
答案 0 :(得分:3)
sf::Font font;
if(!font.loadFromFile("arial.ttf"))
{
std::cout << "ERROR: Cannot load font" << std::endl;
}
此时你需要停止,即从主要回来。未加载字体,然后您稍后使用它,导致空指针取消引用。