C++ 如何根据作为输入传递的参数调用一个构造函数或另一个构造函数?
C++ How can I call one constructor or the other depending on the parameters passed as input?
我有两个构造函数:
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);
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 构造函数正在调用一个使用当前类类型的函数
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 构造函数在退出函数时无法初始化一个参数
- C++-我可以创建另一个类的成员并在构造函数中使用它吗
- 为什么需要知道一个类是平凡的还是有平凡的构造函数
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 关于复制构造函数的一个棘手问题
- 没有公共构造函数作为另一个类模板成员的类模板
- C++:将初始化的对象传递给另一个类的构造函数;需要不必要的构造函数吗?
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- 如何将我编写的对象传递到另一个类的构造函数中?
- 如何使用 swig 修改类构造函数以保留对其中一个构造函数参数的引用?
- C++:调用没有匹配函数:为什么需要一个空的构造函数?
- 在C++中将对象从另一个类传递到另一个类的构造函数?
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 创建一个没有复制构造函数的类的 std::vector 的 std::vector
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 在c++中的复制构造函数/一个声明语句中的初始化的延续中使用chain方法