C++ 如何根据作为输入传递的参数调用一个构造函数或另一个构造函数?

nin*_*zzo 0 c++ constructor c++17

我有这两个构造函数:

MyClass(char* path);
MyClass(int n);
Run Code Online (Sandbox Code Playgroud)

如果用户将路径作为参数传递,我需要调用第一个,否则调用另一个。

我的问题是我不知道如何做到这一点,因为我不能在不初始化的情况下定义类,也不能定义引用然后将类创建到这样的 if-else 块中:

MyClass& c;
if (argc == n) // path passed
{
    c = MyClass(argv[n-1]);
}
else {
    c = MyClass(10);
}
Run Code Online (Sandbox Code Playgroud)

cdh*_*wie 5

您可以使用三元表达式。(在 C++17 之前,这要求您的类是可复制或可移动的。)

MyClass c = argc == n ? MyClass(argv[n-1]) : MyClass(10);
Run Code Online (Sandbox Code Playgroud)