我有一个template
,我有方法T get(int i)
和set(int i, T val)
。我必须使特征类改变的不是行为,而是改变的set
争论get
。
template<typename T,int Roz>
class Wektor{
public:
T tab[Roz];
T get(int i)
{
return tab[i];
}
void set(T val,int i)
{
tab[i]=val;
}
}
所以traits类必须改变get和set。如果 T 是 int 或 double 我们通过复制 int 获得参数
int get(int i);
void set(int val,int i);
双倍的
double get(int i);
void set(double val,int i);
对于其他类型:
T* get(int i);
void set(T* val,int i);
我们必须在特征中做到这一点,而不是通过模板的专门化。
所以我这样写 tratis:
template<typename T,int Roz>
class traitsWektor
{
public:
T tab[Roz];
T get(int i)
{
return tab[i];
}
void set(T val,int i)
{
tab[i]=val;
}
}
所以我在这里卡住了。我想我应该做
template<typename T, int Roz>
class Wektor : public traitsWektor<T,Roz>
但我不确定这是否正确,仍然是 tratis。