#include
#include
class Label
{
public:
Label(sf::String msg, float y)
{
if (!font.loadFromFile("arial.ttf"))
{
printf("Error loading font!\n");
}
text.setString(msg);
text.setPosition(0, y);
}
sf::Font font;
sf::Text text = sf::Text("Label", font, 40);
};
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
// label is a local variable
Label label1 = Label("Label1", 0);
// label is inside a pointer
std::unique_ptr label2 = std::make_unique("Label2", 50);
struct Labelstruct
{
Label label;
};
// label is inside a struct
struct Labelstruct label3 = { Label("Label3", 100) };
// label is inside a struct inside a pointer:
std::unique_ptr label4 = std::make_unique(Label("Label4", 150));
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(label1.text);
window.draw(label2->text);
window.draw(label3.label.text);
window.draw(label4->label.text);
window.display();
}
return EXIT_SUCCESS;
}
Объяснение: Класс Label оборачивает sf::Text. Затем я использую четыре разных способа его инициализации и рисования:
- Локальная переменная -> нет проблем
- Указатель -> нет проблем
- Внутри структуры -> нет проблем
- Указатель на структуру, содержащую метку -> ПРОБЛЕМА >

Почему указатель на структуру вызывает эту проблему?
Для вашего удобства я использовал эту команду для компиляции:< /p>
g++ test.cc -std=c++20 -lsfml-window -lsfml-system -lsfml-graphics
Подробнее здесь: https://stackoverflow.com/questions/791 ... -a-pointer
Мобильная версия