Как создать экземпляр класса из стека с разными конструкторами?

#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); }