我有这个界面:
struct I
{
virtual void f(int) = 0;
virtual void f(float) = 0;
};
我可以I
使用类似于下一节课的东西吗?
struct C : public I
{
template<typename T>
void f(T);
};
不,你不能那样做。模板方法重载了原来的两个方法(即它是同名的不同方法)。C
仍然有两个纯虚函数。
正如 NPE 正确指出的那样,您不能直接执行此操作。但是,您仍然可以通过委托避免代码重复:
struct C : public I
{
void f(int x) { f_internal(x); }
void f(float x) { f_internal(x); }
private:
template<typename T>
void f_internal(T x) { do stuff with x; }
};