我有一个类,我们称它为A.它有一个枚举(E)和一个方法Foo(E e),并在参数中获取E.我想为A写一个包装器(装饰器)W,所以它会有自己的方法Foo(A :: E)。但是我想要进行某种封装,所以这个方法应该定义为Foo(F f),其中F是W中定义的另一个枚举,可以转换为A :: E。例如:枚举“复制”问题
class A
{
public:
enum E { ONE, TWO, THREE };
void Foo(E e);
};
class B
{
//enum F; // ???
void Foo(F f)
{
a_.Foo(f);
}
private:
A a_;
};
应该如何定义F?我不想复制这样的值:
enum F { ONE = A::ONE, TWO = A::TWO, THREE = A::THREE };
因为它在附近的一个潜在的错误功能。是typedef的定义:
typedef A::E F;
是最好的决定吗?它合法吗?
typedef本质上会使用B中的A :: E。所以我想明显的问题是为什么你不想在这两个类中使用A :: E,那就是声明B :: Foo(A: :E f)? – andand 2010-04-08 01:33:18