C++静态非成员函数返回模板类的对象

标签 c++ class templates return-type non-member-functions

我有一个静态非成员函数,它根据对象的类型返回一个模板类对象。

template< typename T >
class Example
{
.... 
};

static Example non_member_function(int var) {
  if (var == 1)
     return Example<float>;
  else
     return Example<int>
}

这不起作用,因为返回类型 Example 是一个模板。我该如何写这个返回类型

最佳答案

你不能在返回值中使用不同的类型,除非函数也成为模板 - 每个返回类型定义一个新函数,它们都是不同的。

更好的方法是返回一个指针,确实允许多态。

请注意,您随后将返回一个指向本地对象的指针,该对象在函数结束后未定义。您需要返回一个新对象 ( return new Example<float>; ),或者在函数内使这两个对象成为静态对象并返回它们的地址 - 这取决于您是想每次都返回一个新对象,还是始终返回同一个对象。

关于C++静态非成员函数返回模板类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46921277/

相关文章:

c++ - gdb 在 Windows 中无法正常工作

c++ - 如何将鼠标坐标转换为 "mm"

c++ - 执行 cin 后计算标准输入中的字符数

c++ - 实时系统的两阶段构建

jQuery 从具有相同类的多个输入创建一个实时数组

php - 使用 PHP Reflection 获取非静态的公共(public)属性

c++ - Clang (OS X) 在特定的嵌套声明中需要 "template"关键字,而 VS 禁止它

c++ - 即使锁定失败,带有 try_to_lock 的 unique_lock 是否应该拥有互斥锁?

c++ - 具有特定模板类 : "template<ANY...> friend class A;" 的 friend

php - Smarty:从字符串/浮点值的末尾修剪零