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

我有以下两个构造函数:

MyClass(char* path);
MyClass(int n);

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

我的问题是我不知道如何执行此操作,因为如果不先初始化就无法定义类,也无法定义引用,然后将类创建到if-else块中,如下所示:

MyClass& c;
if (argc == n) // path passed
{
    c = MyClass(argv[n-1]);
}
else {
    c = MyClass(10);
}
评论
  • 脆弱不堪
    脆弱不堪 回复

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

    MyClass c = argc == n ? MyClass(argv[n-1]) : MyClass(10);