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

C++ How can I call one constructor or the other depending on the parameters passed as input?

本文关键字:构造函数 一个 另一个 调用 参数 何根 输入 C++      更新时间:2023-10-16

我有两个构造函数:

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);
相关文章: