Текст SFML не отображается внутри структуры и указателяC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Текст SFML не отображается внутри структуры и указателя

Сообщение Anonymous »

Это минимальный воспроизводимый пример:
#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. Затем я использую четыре разных способа его инициализации и рисования:
  • Локальная переменная -> нет проблем
  • Указатель -> нет проблем
  • Внутри структуры -> нет проблем
  • Указатель на структуру, содержащую метку -> ПРОБЛЕМА >
"Ярлык4" не отображается. Я вижу точку, где должен появиться ярлык:
Изображение

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


Подробнее здесь: https://stackoverflow.com/questions/791 ... -a-pointer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»