首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++:根据参数实例化模板化的类

C++:根据参数实例化模板化的类
EN

Stack Overflow用户
提问于 2011-06-27 02:12:06
回答 3查看 407关注 0票数 2

我经常发现需要使用以下模式:

代码语言:javascript
运行
复制
template<typename T>
class SomeClass : public Base {
   SomeClass(const T& t) {...}
   ...
};
template<typename T>
SomeClass<T>* makeSomeClass(const T& t) {
   return new SomeClass<T>(t);
}

并使用它:

代码语言:javascript
运行
复制
Base* = makeSomeClass(123);

当我不想显式地指定T时,这是很有用的,因为它是一个非常复杂的(函数类型等),并且函数参数可以隐式推导出类型。

有没有办法在没有额外的"make“函数的情况下做到这一点?为什么模板推导只适用于函数参数,而不适用于构造函数参数?

EN

Stack Overflow用户

发布于 2011-06-27 02:16:28

如果构造函数本身是一个模板,那么它可以在构造函数参数中工作。不同之处在于,当您使用帮助器时,您使用的是函数模板,其中编译器可以推断类型。如果没有帮助器,您将使用类模板,在调用(非模板)构造函数之前,编译器必须以某种方式推断类型。

票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6485791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档