我想要将一个类转换为一个模板,这个类必须访问来自typename T的一些数据。在本例中,typename T可以是一个对象,也可以是一个指向对象的指针。在模板中,我如何判断我是在处理指针还是对象?
我不能用Boost。
发布于 2012-07-12 07:30:33
您将使用模板专门化。首先,您可以将模板参数视为普通类型来创建模板。
template <typename T>
struct Foo {
T t_;
Foo () { std::cout << "regular version" << std::endl; }
};然后,当模板是指向某个类型的指针时,您可以专门化该模板。
template <typename T>
struct Foo<T *> {
T *t_;
Foo () { std::cout << "pointer version" << std::endl; }
};
Foo<int> a;
Foo<int *> b;https://stackoverflow.com/questions/11443022
复制相似问题