C++のclassで新しいタイプのstructを定義する方法の例を教えてください。
ありがとう。
このようなもの:
class Class {
// visibility will default to private unless you specify it
struct Struct {
//specify members here;
};
};
おそらくいくつかのヘッダーファイルでクラスとネストされた構造体を宣言する
class C {
// struct will be private without `public:` keyword
struct S {
// members will be public without `private:` keyword
int sa;
void func();
};
void func(S s);
};
実装/定義を分離したい場合、おそらくCPPファイルで
void C::func(S s) {
// implementation here
}
void C::S::func() { // <= note that you need the `full path` to the function
// implementation here
}
実装をインライン化する場合は、他の回答でも問題ありません。
何かのようなもの:
class Tree {
struct node {
int data;
node *llink;
node *rlink;
};
.....
.....
.....
};
ここでの他の回答は、クラス内で構造体を定義する方法を示しています。これを行う別の方法があり、それはdeclareクラス内の構造体ですが、defineそれは外部です。これは、たとえば、構造体がかなり複雑で、他の場所で詳細に説明することでメリットが得られる方法でスタンドアロンで使用される可能性がある場合に役立ちます。
この構文は次のとおりです。
class Container {
...
struct Inner; // Declare, but not define, the struct.
...
};
struct Container::Inner {
/* Define the struct here. */
};
より一般的には、構造体ではなくネストされたクラスを定義するコンテキストでこれを見るでしょう(一般的な例はコレクションクラスの反復子型を定義することです)が、完全を期すためにここで披露する価値があると思いました。