C++调用一个返回模板类型值的函数
C++ Calling a function that returns template type value
我试图了解是否可以调用一个返回模板类型值的函数,而不在调用语句中显式指定它?
我试图调用的函数是这样的,
template <typename T>
std::unique_ptr<SomeClass<T>> createObjectInstance(InputData data) {
if(data.type_str == "abc") {
return createObjectInstanceImpl<ABC>(data);
} else if(data.type_str == "def") {
return createObjectInstanceImpl<DEF>(data);
} else {
// throw error
}
}
调用语句
const auto objectPtr = createObjectInstance(data);
// Do something with objectPtr
这不会编译,编译器抱怨它无法推断模板参数。调用函数是否需要在每次需要时解析类型?这样做似乎很混乱。是否存在已知的设计变通方法?
不可能像您的示例那样在运行时定义函数的返回类型。
使用模板化返回值定义函数时,返回值只能是一种类型。并且该类型必须在编译时定义。
函数编译的唯一方法是将返回指针的类型设为ABC
和DEF
的基类。但是,您将不需要模板函数来实现该目标。
相关文章:
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 将C++子类成员函数(虚拟实现)传递给 C 类型函数指针
- C++ 这里有一个返回 (24) 的布尔返回类型函数
- 使用SFINAE来检测void返回类型函数的存在
- 使用此类型函数有什么优势
- 为什么此函数通过类型函数指针调用后,呼叫明智地行为
- 如何使用无类型函数指针调用C++成员函数
- 模板返回类型函数如何在C++中工作
- 具有通用类型函数的动态库[C ]
- 如何在返回类型函数模板的专用化中使用派生类型?( "couldn't infer template argument" )
- Bon appetit :从 int 返回类型函数在 main() 中打印字符串
- 对于需要其他模板参数的类型函数的部分模板专业化
- c++错误的参数类型-函数指针
- 延迟评估模板类型函数
- 在引用或指针返回类型函数上输入
- 具有指针数据类型的非类型函数模板参数
- STL中使用的C++自定义比较类型(函数谓词与较少结构)
- C++模板基类的非类型函数模板的 using 声明
- 字符串到类型函数,模板专用化使调用统一
- 自由类型函数可以接受 Unicode 文件名吗?