gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:57:04 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com