2017-03-22 10 views
0

私はC++を使いこなすことを学んでおり、クラスと埋め込み列挙型のスコープの仕組みを理解しようとしています。オブジェクトから構造体の列挙型にアクセスする

現在、私は次のようになりますクラスを持っている:

class Foo { 
public: 
    Foo(); 

    enum Option = { 
     FIRST, 
     SECOND, 
     THIRD 
    }; 

    struct Example = { 
     const char* name; 

     Option key; 

     enum keyOption = { 
      PROPERTY, 
      FLAG 
     } keyValue; 
    }; 
}; 

はその後、私の主な機能には、私はそれを初期化し、その後、上記のコードでExample構造体

int main() 
{ 
    Foo *test; 

    Foo::Example content = { 
     "Hello World", 
     test->FIRST, 
     test->Example::PROPERTY 
    }; 
} 

にいくつかの値を追加します

error: 'Foo::keyOption' is not a base of 'Foo'

私はそれを修正することで修正できることを知っていますtest->Example::PROPERTY

Foo::Example::PROPERTYにしかし、私が代わりに Foo::のオブジェクトを介して Example構造体の値にアクセスすることができる方法はありますか?同様に FIRSTの値にアクセスする方法と同じですか?

私は違いの概念の命名を屠殺している場合、私は何かを構築することによって自分自身を教えようとしています、そして、私はすぐに詳細をもっと読む必要があります。

ご協力いただきありがとうございます。本当に感謝しています!

+1

'Foo :: Example :: PROPERTY'と' Foo: :FIRST'は正しい方法です。それのどこが悪いんだい?なぜあなたは何か他のものを探していますか? –

+0

わかりました。私はちょうどそれを数回見たことがあります。だから私は別のやり方でやっていなければならないという印象を受けました。迅速なコメントをいただきありがとうございます。私は今それを変更します。 –

答えて

1

はFooを動作するはずです:: FIRSTとはFoo ::例:: PROPERTYは、列挙子の取り得る値です。 Example :: keyとExample :: keyValueだけがFoo :: FIRSTとFoo :: Example :: PROPERTYにインスタンス化され、初期化できる構造体のメンバです

+0

コードを見てきましたので、これは意味があります。私は、言語の理解が不足しているため、それを他の方法でやろうとしていました。私の理解を助けてくれてありがとう! –

-1

これは

Foo::Example content = { 
    "Hello World", 
    test->FIRST, 
    Foo::Example::PROPERTY 
}; 
関連する問題