c++ - 模板虚函数

标签 c++ templates virtual

这是一些代码:

class IWorker {
public:
    virtual void Do(int x) const = 0;
};

class TSomeWorker : public IWorker {
    void Do(int x) const {
        // ...
    }
};

现在,假设我们需要重构它,使函数 Do 变成模板(int 变成一些 T)。我知道 C++ 不允许创建模板虚函数。有其他选择吗?

最佳答案

这取决于您的具体需求。但根据您发布的内容,我建议:

template<typename T>
class IWorker {
public:
    virtual void Do(T x) const = 0;
};

template<typename T>
class TSomeWorker : public IWorker<T> {
    void Do(T x) const {
        // ...
    }
};

关于c++ - 模板虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11299261/

相关文章:

c++ - 我如何将这些元素表达为 C++

c++ - 创建 const std::vector 作为两个 const std::vector 的串联

templates - 如何在 GStringTemplateEngine 模板中定义函数绑定(bind)?

c++ - 递归调用模板类的成员函数

c++ - 为什么这个转换为虚函数中的基类会出现段错误?

c++ - malloc 分配的内存在什么时候获得类型?

c++ - 有没有办法创建一个不改变程序中参数的函数

c++ - 为什么 using 指令在全局范围和局部范围内的行为不同?

C++:覆盖纯虚拟成员变量?

keyboard - UWP 虚拟键盘将内容向上推