1

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

我不能使用升压。

4

1 回答 1

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;
于 2012-07-11T23:30:33.417 回答