c++ - 模板类的专用构造函数

标签 c++ templates c++11 constructor

假设有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.
}

我想如果我使用两个模板定义来定义构造函数会有明显的副作用。

最佳答案

是这样的吗?

template <class T>
class Z;

template <class T>
class Y;

template <class T>
class X
{
    X(Z&);
};

template<class T>
X<Y<T>> MakeX(Z<T>& z)
{
    return X<Y<T>>(z);
};

关于c++ - 模板类的专用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22890675/

相关文章:

c++ - 从我的 .exe 中隐藏纯文本字符串

php - mustache php gettext()

c++ - std::make_shared 中的原始指针

c++ - 我应该尽可能在 C++11 中用 'const int' 替换 'constexpr int' 吗?

c++ - QGraphicsScene::fitInView() 仅适用于调整大小

c++ - 删除 BST 中有两个 child 的节点

c++ - 变量不更新

c++ - 是否可以在定义函数的位置之外声明函数的属性? (海湾合作委员会)

c++ - 模板继承 : There are no arguments that depend on a template parameter

c++ - 错误 : non-aggregate type 'vector<string>' cannot be initialized with an initializer list