我有一個類,我們稱它爲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