定义模板类的方法

时间:2016-01-17 21:40:30

标签: c++

我想实现类似的目标:

ans

我知道你不能模板化命名空间,所以我只是写它很长的路径吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你想要的就是你想要的。即使你的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和尾随返回类型。