tru*_*ru7 5 c++ templates specialization
我有一个类tPoint,可以实现具有不同的基类型
template<typename T>class tPoint{
T x;
T y;
public:
void Set(T ix, T iy){x=ix;y=iy;}
};
Run Code Online (Sandbox Code Playgroud)
当类型T是int时tPoint<int>,我想要一个特殊的Set(float,float),所以我可以在赋值之前舍入值.
我认为,通过专业化,我可以:
template<> void tPoint<int>::Set(float ix,float iy){x=ix+.5; y=iy+.5;}
Run Code Online (Sandbox Code Playgroud)
这样编译器就会抱怨类定义中没有匹配的函数.
但是如果我在类Set(float,float)中声明它然后它已经定义了(当它为T = float编译时)
我希望我明确表示,对此采取干净的做法或者我做错了什么?谢谢!
你需要专门化这个类,如下所示:
template<> class tPoint<int>{
int x;
int y;
public:
void Set(int ix, int iy){x=ix;y=iy;}
void Set(float ix, float iy){x = ix+0.5; y = iy+0.5;}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
815 次 |
| 最近记录: |