#c #c 11
Вопрос:
Мне нужно создать экземпляр класса из стека, но в зависимости от переменной мне нужно вызывать его с помощью разных конструкторов
class A { public: A(std::string str); A(int value) }; void main(void) { bool condition = true; A class_a {condtion ? "123" : 456}; }
Но я не могу заставить его скомпилироваться.
Ответ №1:
Тернарный оператор не может возвращать разные типы для true
и false
.
Вы могли бы решить эту проблему следующим образом:
A class_a = condition ? A("123") : A(456);
Другие исправления:
#include lt;stringgt; class A { public: A(std::string str) {} // the function must have an implementation A(int value) {} // the function must have an implementation }; int main() { // not void main bool condition = true; A class_a = condition ? A("123") : A(456); }