假设我们有通用的函数指针:

template <class ArgT, class RetT, class F>
struct A {
    F f;
public:
    A(F f) : f(f) {}

    RetT operator()(ArgT arg) { return f(arg); }
};


为什么这样做?

template <class ArgT, class RetT, class F>
class B {
    A<ArgT, RetT, F> test;
};


...这不是吗?

class C {
    template <class ArgT, class RetT, class F>
    A<ArgT, RetT, F> test;
};


错误C3857:“ C :: test”:不允许多个模板参数列表

我需要像上一个示例(C类)那样定义一个类,该怎么做?

最佳答案

因为变量不能有模板。实际上,只有类和函数可以具有模板。

编辑:正如Alan Stokes所说,在C ++ 14中,变量也可以具有模板。

10-01 22:47
查看更多