私はこのコードに遭遇しました。クラス名にスコープ解決演算子が使用されている意味
SomeClassはクラスなので、OtherClassはSomeClassのスコープ内に存在するクラスですか?私はこのようなことは一度も見たことがありません。
これは意味しているのでしょうか?
私はこのコードに遭遇しました。クラス名にスコープ解決演算子が使用されている意味
SomeClassはクラスなので、OtherClassはSomeClassのスコープ内に存在するクラスですか?私はこのようなことは一度も見たことがありません。
これは意味しているのでしょうか?
多分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イディオムは、遅延定義を持つ内部クラスの優れた使用です。
私はSomeClass
だと思うがOtherClass
それはOtherClassは工assの内部クラスであることを意味
class BaseClass {};
namespace SomeClass
{
class OtherClass;
};
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
};
SomeClassが純粋な名前空間だった場合、この構文が合法であるかどうかはわかりません:class NameSpaceName :: ClassName:public BaseClass –
置かれている名前空間です。すでにそこに宣言されている方がよいでしょう。 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
};
いくつかのクラスは、基本クラスの名前であり、他のクラスは、派生クラスの内部をリンク派生クラスであり、コロンの派生クラスの後、基本クラスをリンクします。 あなたの質問に答えが2つの基本クラスと1つの派生クラスが言及しています。
Googleの用語はネストされたクラスです。 – chris