如果我有一个包含许多 typedef
'd 变量的类,如下所示:
class X {
typedef token TokenType;
bool doStuff()
{
TokenType data;
fillData(&data);
return true;
}
};
有没有办法在派生类中覆盖
typedef
的 TokenType
?注意这不是使用模板的好地方(这已经是一个模板化类,任何更改都可能导致 [编辑:无限] 递归定义 [
class X < class Y = class X < class Y . . .> >
等]。) 最佳答案
您可以做的是阴影,但不能覆盖。也就是说:你可以定义一个派生类 Y 和它自己的 TokenType 类型定义,但只有当有人直接或通过静态类型为 Y 的对象引用 Y::TokenType 时才会起作用。任何静态引用 X::TokenType 的代码即使对于 Y 类型的对象也会这样做。