小编Bis*_*tev的帖子

如何在派生类中重写模板类的静态方法

我在覆盖基本类的静态方法方面遇到了一些问题,但整个问题非常复杂且太长(游戏引擎中资源管理的普遍化),所以这里有一个简化版本:

template<class T>
class base
{
    static void bar()
    { printf("bar"); }
public:
    static void foo()
    { bar(); }
};

class derived : public base<int>
{
    static void bar()
    { printf("baz"); }
};

int main() { derived::foo(); }
Run Code Online (Sandbox Code Playgroud)

上面的代码在我的情况下输出"bar",我希望它输出"baz".我该怎么办呢?似乎无论我尝试什么,base :: foo()总是调用base :: bar().我的设计可能有问题.我从未遇到过这个问题 - 我该如何解决?

c++ inheritance static

15
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

inheritance ×1

static ×1