访问违规SFML

时间:2014-12-28 23:05:27

标签: c++ sfml

我已经开始使用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();
}

1 个答案:

答案 0 :(得分:3)

    sf::Font font;
    if(!font.loadFromFile("arial.ttf"))
    {
        std::cout << "ERROR: Cannot load font" << std::endl;
    }

此时你需要停止,即从主要回来。未加载字体,然后您稍后使用它,导致空指针取消引用。