我正在尝试为类模板创建某种回调。代码是这样的:

template <typename t>
class Foo {
    void add(T *t) {
        prinf('do some template stuff');
        on_added(t);
    }
    void on_added(T *t) { }
}

struct aaa {}

class Bar : Foo<aaa> {
    void on_added(aaa *object) {
        printf("on added called on Bar");
    }
}

Bar上的on_added函数永远不会被调用。添加模板子类可以选择覆盖的回调的最佳方法是什么?谢谢

最佳答案

使用“虚拟” ...

template <typename t>
class Foo {
    void add(T *t) {
        prinf('do some template stuff');
        on_added(t);
    }
    virtual void on_added(T *t) { }
}

struct aaa {}

class Bar : Foo<aaa> {
    void on_added(aaa *object) {
        printf("on added called on Bar");
    }
}

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

10-14 09:33