如果我有一个包含许多 typedef 'd 变量的类,如下所示:

class X {

typedef token TokenType;

bool doStuff()
{
TokenType data;
fillData(&data);
return true;
}

};

有没有办法在派生类中覆盖 typedefTokenType

注意这不是使用模板的好地方(这已经是一个模板化类,任何更改都可能导致 [编辑:无限] 递归定义 [class X < class Y = class X < class Y . . .> > 等]。)

最佳答案

您可以做的是阴影,但不能覆盖。也就是说:你可以定义一个派生类 Y 和它自己的 TokenType 类型定义,但只有当有人直接或通过静态类型为 Y 的对象引用 Y::TokenType 时才会起作用。任何静态引用 X::TokenType 的代码即使对于 Y 类型的对象也会这样做。

10-08 04:15