小编mar*_*man的帖子

可以在没有模板参数的情况下使用模板化类的静态类函数吗?

我有一个模板类,它包含一个不依赖于模板参数的静态函数.然而,当我使用该函数时,编译器似乎强迫我指定一个typename.

template <typename T>
class MyClass {
    ...
    static void function();
};

template <typename T>
void MyClass<T>::function() {
    ....
}
Run Code Online (Sandbox Code Playgroud)

此功能可用作:

MyClass<int>::function();
Run Code Online (Sandbox Code Playgroud)

但'int'就是满足编译器的需要.它没有任何意义,可以被任何其他类型替换,这不会增加代码的可读性.我想做点什么

MyClass<>::function();
Run Code Online (Sandbox Code Playgroud)

甚至

MyClass::function();
Run Code Online (Sandbox Code Playgroud)

但编译器不允许我.我意识到这是因为在头文件中我明确地将该函数标记为模板化,但是当我从头文件中删除'<T>'时它也不会编译.

这样做的正确方法是什么?

c++ templates

2
推荐指数
2
解决办法
1178
查看次数

如何为指针类创建静态模板函数?

我的模板类A包含一个调用模板类的静态函数的函数:

template <typename T>
void A<T>::fun() {
    T obj = T::create();
    ....
}
Run Code Online (Sandbox Code Playgroud)

如果我想在T = B*时使用此代码,我应该如何修改?我知道我不能做(*T):: create(),但从概念上讲,这就是我想要的.

c++ static templates class

2
推荐指数
1
解决办法
100
查看次数

标签 统计

c++ ×2

templates ×2

class ×1

static ×1