Способы инициализации сложных переменных-членов в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Способы инициализации сложных переменных-членов в C++

Сообщение Anonymous »

У меня есть класс для управления некоторыми вещами, связанными с графическим интерфейсом, например объект tgui::Gui.
Я хотел бы сохранить этот объект графического интерфейса как переменную-член в моем классе, но проблема в том, что когда я пытаюсь для его инициализации.
Следующее не работает:
(h-файл)

Код: Выделить всё

class BTGui
{
public:
BTGui();

private:
tgui::Gui m_gui;
};
(файл cpp)

Код: Выделить всё

BTGui::BTGui()
{
sf::RenderWindow window{sf::VideoMode({1024, 800}), "MyTitle", sf::Style::None};
m_gui = tgui::Gui{window};
}
Проблема в том, что конструктор копирования отсутствует: объект типа 'tgui::Gui' не может быть назначен, поскольку его оператор присваивания копирования неявно удален.
Я пробовал использовать список инициализаторов, например:

Код: Выделить всё

BTGui::BTGui() : m_gui{tgui::Gui{sf::RenderWindow{sf::VideoMode({1024, 800}), "MyTitle", sf::Style::None}}} {}
но это не компилируется: ошибка C2440: '': невозможно преобразовать из 'списка инициализаторов' в 'tgui::SFML_GRAPHICS::Gui' и обратите внимание: Причина: невозможно преобразовать из 'sf::RenderWindow' в 'const tgui::SFML_GRAPHICS::Gui'
If это была простая переменная, я бы просто использовал список инициализаторов, но мне также нужно создать объект окна, и давайте предположим, что размер окна был задан пользователем.
Каков «лучший» способ сделать это? это?
Под «наилучшим» я подразумеваю простой способ, который будет работать и для нескольких переменных.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ables-in-c
Ответить

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

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

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

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

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