ネストされたクラスがある場合:
class MyClass
{
class NestedClass
{
public:
// nested class members AND definitions here
};
// main class members here
};
現在、MyClass
の定義はCPP
ファイルにありますが、NestedClass
の定義はヘッダーファイルにあります。つまり、CPP
ファイルで関数/コンストラクターを宣言できません。
だから私の質問は、cppファイルでNestedClass
の関数をどのように定義するのですか?私ができない場合、その理由は何ですか(そして、これが事実である場合、私はこれがなぜ起こるかについて漠然とした考えを持っていますが、私は良い説明を求めています)?構造はどうですか?
あなたはできる。内部クラスに次のようなメソッドがある場合:
class MyClass {
class NestedClass
{
public:
void someMethod();
};
// main class members here
};
...次のように.cppファイルで定義できます。
void MyClass::NestedClass::someMethod() {
// blah
}
構造体はC++のクラスとほとんど同じです—アクセスのためにデフォルトで 'public'になっています。他のすべての点でクラスと同様に扱われます。
あなたはcan(コメントに記載されているように)内部クラスを宣言するだけです、例えば:
class MyClass {
class NestedClass;
// blah
};
..次に、それを実装ファイルで定義します。
class MyClass::NestedClass {
// etc.
};