C++方法是否可以根据传递给构造函数的参数具有不同的返回类型?

Can a C++ method have different return types depending on parameters passed to the constructor?

本文关键字:参数 返回类型 构造函数 是否 方法 C++      更新时间:2023-10-16

我在C++中有一个模板类,它有一个方法,如果某个参数为 1(在构造对象之前不知道此参数(,理论上应该返回 T(特定类型(,如果参数大于 1,则应返回该类的另一个实例化。有什么简单的方法可以做到这一点吗?

考虑一下:您将该函数的返回值分配给某个auto变量。编译器需要能够决定该变量必须是什么类型...在编译时

所以不,没有办法做到。您可以使用例如std::variantstd::any为返回类型,但不能通过任何运行时机制更改返回类型。

参数在

构造对象之前是未知的。

答案是 是
如果以上以静态方式表示 否 如果以上表示以动态方式
表示

上面给出的代码没有意味着没有有用的方法

(对不起,还不能评论任何事情(

您不能拥有一个具有不同类型返回的函数(不再符合函数的技术定义(,但是如果您能够检查您所说的可能是== 1> 1的参数,您可能会调用两个不同的方法之一,每个方法针对各自的情况执行所需的操作。