Здравствуйте, 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.:
если что то не работает, то гугл и отладка в помощь