1

我有这个界面:

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

我可以I使用类似于下一节课的东西吗?

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

2 回答 2

3

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

于 2013-04-27T06:10:54.130 回答
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; }
};
于 2013-04-27T08:01:49.213 回答