C 模板构造函数

新手上路,请多包涵

我希望有一个没有参数的模板构造函数的非模板类。

据我了解,不可能拥有它(因为它会与默认构造函数冲突 - 我是对的吗? ), 解决方法如下:

 class A{
   template <typename U> A(U* dummy) {
   // Do something
   }
};

也许有更好的选择(或更好的解决方法)?

原文由 Yippie-Ki-Yay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 717
2 个回答

调用构造函数模板时无法显式指定模板参数,因此必须通过参数推导来推导。这是因为如果你说:

 Foo<int> f = Foo<int>();

<int>Foo 类型的模板参数列表,而不是它的构造函数。构造函数模板的参数列表无处可去。

即使使用您的解决方法,您仍然必须传递一个参数才能调用该构造函数模板。完全不清楚您要达到的目标。

原文由 James McNellis 发布,翻译遵循 CC BY-SA 2.5 许可协议

只需简单地添加一个虚拟变量,例如

class A {
  template<typename T>
  A(const T&, int arg1, int arg2);
}

原文由 vrqq 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题