Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can a C++;方法是否根据传递给构造函数的参数具有不同的返回类型? 我有C++中的一个模板类,它有一个方法,理论上应该返回一个T(特定类型),如果某个参数为1(这个参数在构造对象之前是未知的),并且如果参数大于1,则应该返回该类的另一个实例化。有什么简单的方法可以做到这一点吗?_C++ - Fatal编程技术网

Can a C++;方法是否根据传递给构造函数的参数具有不同的返回类型? 我有C++中的一个模板类,它有一个方法,理论上应该返回一个T(特定类型),如果某个参数为1(这个参数在构造对象之前是未知的),并且如果参数大于1,则应该返回该类的另一个实例化。有什么简单的方法可以做到这一点吗?

Can a C++;方法是否根据传递给构造函数的参数具有不同的返回类型? 我有C++中的一个模板类,它有一个方法,理论上应该返回一个T(特定类型),如果某个参数为1(这个参数在构造对象之前是未知的),并且如果参数大于1,则应该返回该类的另一个实例化。有什么简单的方法可以做到这一点吗?,c++,C++,考虑一下:您正在将该函数的返回值赋给某个auto变量。编译器需要能够决定变量必须是什么类型。。。在编译时 所以,没有办法做到这一点。您可以使用例如std::variant或std::any作为返回类型,但不能通过任何运行时机制更改返回类型 在构造对象之前,参数是未知的 答案是 如果以上是静态方式,则为是 如果以上是指动态方式,则不适用 上面没有给出代码意味着没有有用的方法(对不起,现在还不能评论任何东西) 您不能有一个具有不同返回类型的函数(不再适合函数的技术定义),但是如果您能够检查参数,您说

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

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

在构造对象之前,参数是未知的

答案是
如果以上是静态方式,则为是
如果以上是指动态方式,则不适用

上面没有给出代码意味着没有有用的方法(对不起,现在还不能评论任何东西)


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

在构造对象之前,此参数是未知的。
编译时是否知道此参数
类的另一个实例化
-那么它是相同类型的T还是不同类型的T?为什么不直接返回
std::variant
?你能提供一些代码来表达你的想法吗?我有没有办法把它定义为一个宏?@nevets:宏是编译之前基于标记的文本替换,也就是说,任何来自预处理器的内容都会被输入到编译器。编译器需要在编译时知道返回类型(因为它需要相应地保留内存)。没办法。