2013-04-27 72 views
1

实现接口我有这样的接口:通过模板

struct I 
{ 
    virtual void f(int) = 0; 
    virtual void f(float) = 0; 
}; 

我可以使用类似于下一类的东西implemnt I

struct C : public I 
{ 
    template<typename T> 
    void f(T); 
}; 

回答

3

不,你不能这样做。模板方法重载原来的两种方法(即它是一个具有相同名称的不同方法)。 C仍然有两个纯虚函数。

2

正如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; } 
}; 
+0

我已经做了这一点,它看起来有点愚蠢到对模板做的一切,而是因为我需要实现一些接口有调用模板中的所有功能... – Felics 2013-04-27 13:25:20