2012-05-04 14 views

答えて

10

多分OtherClassはSomeClassのスコープの内部に存在するクラスですか?

自分自身にチェックマークを付けます。それが意味することです。

これは、それがSomeClass内で宣言された後、その後OtherClassを定義するために使用されます。

class SomeClass { 
    class OtherClass; 
    OtherClass* GetOtherClassInstance() { ...} 
}; 
class SomeClass::OtherClass { 
} 

内部クラスのみが外部クラスのコンテキストで理にかなっている場合は、1つは、これを行う可能性があります。

class Vector { 
    class Iterator; 
    Iterator* GetStart(); 
}; 
class Vector::Iterator { 
    details. 
} 

他のところで述べたように、pimplイディオムは、遅延定義を持つ内部クラスの優れた使用です。

0

私はSomeClassだと思うがOtherClassそれはOtherClassは工assの内部クラスであることを意味

class BaseClass {}; 
namespace SomeClass 
{ 
    class OtherClass; 
}; 

class SomeClass::OtherClass : public BaseClass 
{ 
    // stuff in here 
}; 
+0

SomeClassが純粋な名前空間だった場合、この構文が合法であるかどうかはわかりません:class NameSpaceName :: ClassName:public BaseClass –

3

置かれている名前空間です。すでにそこに宣言されている方がよいでしょう。 PIMPLイディオムのための素晴らしい作品:

struct my_object { 
    ... 

private: 
    struct my_impl; 
    my_impl * pimpl; 
}; 

// in a cpp file... 
struct my_object::my_impl { 
    ...implementation details of my_object 
}; 
0

いくつかのクラスは、基本クラスの名前であり、他のクラスは、派生クラスの内部をリンク派生クラスであり、コロンの派生クラスの後、基本クラスをリンクします。 あなたの質問に答えが2つの基本クラスと1つの派生クラスが言及しています。

関連する問題