定义模板类的方法
defining methods for template class
我想实现这样的目标:
template <class that, class has, class much, class genericizem>
class Generic{
// using all template stuff
Generic &method(Generic &gen1, Generic &gen2);
};
// what I assume is the solution from vage things I've read
template <class that, class has, class much, class genericizem>
using Gen = Generic<that,has,much,genericizem>;
// and no one wants to see the naive way of writing it.
Gen &Gen::method(Gen &gen1, Gen &gen2){
return gen1;
}
我知道你不能模板化命名空间,所以我只是写很长的路吗?
如果我正确理解你的问题,你想要的,不能像你尝试的那样完成。即使您的using Gen = ...
有效,您仍然需要编写:
template <class that, class has, class much, class genericizem>
Gen<that,has,much,genericizem> &Gen<that,has,much,genericizem>::method(Gen &gen1, Gen &gen2){
因为Gen
是模板别名,所以实际上与原始Genric
相当。
您的成员函数可以定义为:
template <class that, class has, class much, class genericizem>
auto Generic<that,has,much,genericizem>::method(Generic &gen1, Generic &gen2) -> Generic&
{
/* ... */
}
你不需要每次引用Generic
时都重复所有的模板参数,因为一个普通的Generic
代表要实例化的类。这称为注入的类名。
但请注意,从语法上讲,返回类型不在类范围内,因此不能在那里使用注入的类名。相反,您可以使用auto
和尾随返回类型。
相关文章:
- 在方法定义中显式指定命名空间
- 没有针对完全专用模板类的外联虚拟方法定义
- 将虚拟方法定义为私有方法时会发生什么情况?
- 单独的类声明和方法定义文件问题
- Eclipse CDT 不了解方法定义是什么
- C 方法定义具有模板
- Eclipse CDT将方法定义定义到标头文件
- 模板方法定义的问题 - 错误C2244:无法将函数定义与现有声明匹配
- 如何为 Product* getProductFromID(std::string)编写方法定义;.
- gdb 中的方法定义没有源代码
- 方法定义中的错误"passing const List<int> as this argument discards qualifiers"
- Sendmessage在方法定义内部无法正常工作
- C 公共方法定义后定义
- C++模板方法定义在类中不匹配
- 为什么通用模板方法定义与模板类专用化不匹配?
- 方法定义中的C++模板参数
- C++方法定义和变量声明
- 在继承层次结构中将方法定义为虚拟方法一次,以使多态性发挥作用
- 未为非访问器方法定义C++类属性
- 无法将一个类的方法定义为另一个类的好友