使用模板参数的typedef&#ed;成员

时间:2014-06-01 07:29:53

标签: c++ templates typedef

我正在尝试执行以下操作:

struct A {
    typedef int C;
};

template<typename T> struct B {
    T a;
};

template<typename T> struct C : B<T::C> {
    T c;
};

int main() {
    A::C y;
    C<A> x;
}

(在我的特定情况下,AC定义为用于颜色信息的某种数据类型,C是缓冲区,B是分配器。但是编译器抱怨道:

error C2923: "B": "T::C" is not a valid template-Typeargument for the T parameter.

位于template<typename T> struct C : B<T::C>的行。 我怎样才能做到这一点? 注意

struct A {
    typedef int C;
};

template<typename T> struct B {
    T a;
};

template<typename T, typename Q> struct C : B<Q> {
    T c;
};

int main() {
    A::C y;
    C<A, A::C> x;
}

不是一个选项 - 我需要绝对确定QT::C我不能强制执行(我可以吗?)。

0 个答案:

没有答案