64,677
社区成员
发帖
与我相关
我的任务
分享
template<typename T>
class C
{
private:
T member;
};
C<int> c1; //普通用法
C<const int*> c2; //怎么根据 const int* 推导出基本类型 int ,使得 member 仍然是 int 型呢?
template<size_t I>
class C
{
private:
??? member;
};
C<0> c1;
C<1> c2;
#define DATA_8U 2
#define DATA_8S 3
#define DATA_16U 4
#define DATA_16S 5
#define DATA_32S 8
#define DATA_32F 9
#define DATA_64F 16
template<typename _Tp> class DataType {}; // template type derivation
template<> class DataType<uchar> { public: enum { value = DATA_8U }; };
template<> class DataType<char> { public: enum { value = DATA_8S }; };
template<> class DataType<ushort> { public: enum { value = DATA_16U }; };
template<> class DataType<short> { public: enum { value = DATA_16S }; };
template<> class DataType<int> { public: enum { value = DATA_32S }; };
template<> class DataType<float> { public: enum { value = DATA_32F }; };
template<> class DataType<double> { public: enum { value = DATA_64F }; };
对于模板中一个未知类型T,可以用DataType<T>::value获取一个整数值,表示T的实际类型。