【发布时间】:2014-04-06 06:20:04
【问题描述】:
假设有 3 个类:
template <typename T>
class X;
template <typename T>
class Y;
template <typename T>
class Z;
我希望为X 定义一个构造函数,它接受Z<T> 类型的对象引用并返回X<Y<T>> 类型的对象。这可以通过单个模板定义实现吗?
template <typename T>
X<Y<T>>::X(Z<T>) {
// logic to map Z<T> to Y<T> and pass it on for object creation.
}
如果我使用两个模板定义来定义构造函数,我想会有很大的副作用。
【问题讨论】:
-
构造函数不返回任何东西。
-
构造函数不返回任何内容,甚至
void。你想怎么用? -
我的意思是它应该创建一个
X<Y<T>>类型的对象。另一方面,构造函数创建对象的本地副本并移交对它的引用,不是吗?如果与 new 一起使用,此对象将转移到主存储器。这就是我认为在后台发生的事情。我在哪里可以了解更多信息? -
@n.m.我在上次编辑中为问题添加了更多详细信息。
标签: c++ templates c++11 constructor