Re: инициализировать переменную в конструкторе
От: xma  
Дата: 12.03.25 21:42
Оценка: 9 (1)
Здравствуйте, sergey2b, Вы писали:

S>Подскажите пожалуйста есть ли варианты инициализировать переменную в конструкторе


40 лет как под наркозом
я работал говновозом говнокодером


S>данный код генерирует ошибку error G99FBF662: field 'kWindowName_' is uninitialized when used here


гуглим "инициализация константы в конструкторе класса c++", находим

Конструкторы и инициализация объектов
https://metanit.com/cpp/tutorial/5.2.php

делаем выводы (навскидку должно получится что то такое)

  топорный вариант
class Viewer {

private:
const std::string kWindowName_;

public:
Viewer(std::string suffix):
kWindowName_(suffix.empty() ? "Video Viewer" : "Video Viewer" + " " + suffix){};

};


ну и варианты с оптимизацией универсальности (не гарантирую что работают, проверять лень) :

  с uniform-инициализацией (C++11)
class Viewer {

private:
const std::string kWindowName_Base{"Video Viewer"};
const std::string kWindowName_;

public:
Viewer(std::string suffix):
kWindowName_(suffix.empty() ? kWindowName_Base : kWindowName_Base + " " + suffix){};

};


если не заводится, можно по пробывать так

  с инициализацией в конструкторе
class Viewer {

private:
const std::string kWindowName_Base;
const std::string kWindowName_;

public:
Viewer(std::string suffix):
kWindowName_Base("Video Viewer"), 
kWindowName_(suffix.empty() ? kWindowName_Base : kWindowName_Base + " " + suffix){};

};


P.S.:

если что то не работает, то гугл и отладка в помощь
Отредактировано 12.03.2025 21:48 xma . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.