私はこのコードに出くわしました。
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClassはクラスなので、OtherClassはSomeClassのスコープ内に存在するクラスでしょうか?私はそれがこのように行われるのを見たことがありません。
それで、それはそれが何を意味するのですか?
私はこのコードに出くわしました。
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
}
SomeClassはクラスなので、OtherClassはSomeClassのスコープ内に存在するクラスでしょうか?私はそれがこのように行われるのを見たことがありません。
それで、それはそれが何を意味するのですか?
多分OtherClassはSomeClassのスコープ内に存在するクラスですか?
チェックマークを付けてください。それが意味するところです。
OtherClass
これは、内部で宣言された後に定義するために使用されますSomeClass
。
class SomeClass {
class OtherClass;
OtherClass* GetOtherClassInstance() { ...}
};
class SomeClass::OtherClass {
}
内部クラスが外部クラスのコンテキストでのみ意味をなす場合は、これを行うことができます。
class Vector {
class Iterator;
Iterator* GetStart();
};
class Vector::Iterator {
details.
}
他の場所で述べたように、pimplイディオムは、定義が延期された内部クラスの優れた使用法です。
これは、OtherClassがSomeClassの内部クラスであることを意味します。すでにそこで宣言されている方がいいです。単純なイディオムに適しています。
struct my_object {
...
private:
struct my_impl;
my_impl * pimpl;
};
// in a cpp file...
struct my_object::my_impl {
...implementation details of my_object
};
SomeClass
住んでいる名前空間だと思いOtherClass
ます
class BaseClass {};
namespace SomeClass
{
class OtherClass;
};
class SomeClass::OtherClass : public BaseClass
{
// stuff in here
};
一部のクラスは基本クラスの名前であり、他のクラスは派生クラスの内部をリンクする派生クラスであり、コロン派生クラスの後に基本クラスをリンクします。あなたの質問では、答えは2つの基本クラスであり、1つの派生クラスが言及されています。