将类转换为模板

时间:2012-07-11 23:27:01

标签: c++ templates pointers

我想将类转换为模板,并且该类必须访问typename T中的一些数据。在这种情况下,typename T可以是对象或指向对象的指针。如何在模板内判断我是在处理指针还是对象?

我无法使用Boost。

1 个答案:

答案 0 :(得分:2)

您将使用模板专精。首先,您将创建模板,将模板参数视为普通类型。

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;