假设我们有模板类
template <typename T>
class MyTem{
public:
bool is_T_Pointer(){
<...>
}
};
class Cls : MyTem<Cls>{
<...>
};
int main(void){
Cls* classOnHeap = new Cls(); /* T is pointer */
Cls classOnStack; /* T is not pointer */
<...>
}
我知道这是一个糟糕的例子,但如果有人能帮我查明 T 是否是来自模板类的指针,那就太好了。
请记住,我们继承了与基类相同的类模板。
不必完全实现,一个模糊的技术就足够了
最佳答案
你应该在这里使用偏特化:
template<class T>
class A
{
public:
A() {}
};
template<class T>
class A<T*>
{
public:
A(int) {}
};
那么下面的代码将无法编译,因为编译器被迫选择模板的指针版本并且没有默认构造函数:
A<char*> a;
这会编译:
A<char> a;
关于c++ - 确定模板参数是否为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898864/