2

C ++では、declaresメンバー関数を別のクラス内にクラスを定義できます。後で、これらの宣言の定義を定義するときに、含まれているクラスを繰り返さないようにする方法はありますか。たとえば、私のヘッダーは次のようになります。

class Outer {
  class Inner {
    void one();
    void two();
    void three();
  };
};

そして後で、私の定義は次のようになります。

void Outer::Inner::one() { ... }
void Outer::Inner::two() { ... }
void Outer::Inner::three() { ... }

おそらく名前空間を使用して次のようになることにより、宣言の時点で定義せずにOuterを省略できる方法はありますか?

void Inner::one() { ... }
void Inner::two() { ... }
void Inner::three() { ... }
4

1 に答える 1

3

私はこれを特に試していません(ここではコンパイラはありません)が、:: iteratorのような内部クラスで作業している場合は、おそらく次のことができると推測するのは危険です。

using outerclass::innerclass;

そして、次のことを行います。

innerclass::foo() { /* def */ }

外部クラスのスコープに内部クラスと同じ名前のグローバルがないと仮定します。

また、間違いなくマクロを使用でき、typedefを使用できる可能性があります(確かではありませんが、試してみる価値があります)。

これらすべてがあなたのコードを読みにくくし、あなたがそれをどのように回避するかに関係なく、それは悪い考えだと思います。

于 2012-05-24T21:11:30.910 に答える