2016-04-03 6 views
0
class BO2Offsets 
{ 
    public: 
     struct Prestige 
     { 
      u32 Offset { 0x000000 }; 
      char One { 0x01 }, 
       Two { 0x02 }, 
       Three { 0x03 }, 
       Four { 0x04 }, 
       Five { 0x05 }, 
       Six { 0x06 }, 
       Seven { 0x07 }, 
       Eight { 0x08 }, 
       Nine { 0x09 }, 
       Ten { 0x0A }, 
       MasterPrestige { 0x0B }, 
       CheatedPrestige { 0x0C }; 
     }; 
}; 
BO2Offsets BO2; 

main.cのC++ - エラー: 'BO 3' はこのスコープで宣言されていなかった

BO2 *BO3; 

私はBO2として新しい要素を作成していますが、それは私にエラーを返します:

error: 'BO3' was not declared in this scope 

どうすれば解決できますか?
編集:私はそのようBO3を宣言すると は:

BO2Offsets *BO3; 

私はこのようなBO3を使用します。

BO3->Prestige->Offset 

そして、私はエラーを取得しています。エラー:「構造体BO2Offsetsの使用は無効です::プレステージ '|

+2

今すぐ完全な最小の例を完了してください。 – gsamaras

答えて

-1

BO2は型ではなく、変数名のみでコンパイラが必要な型です。

使用

BO2Offsets * B03; 

EDIT:2位

BO3->Prestige.anyName.Offset; 

EDIT2 使用。すべての人が自分のコンテンツを編集していればOKです。 structが不適切に導入されました。フィールドにアクセスできません。今、そのようなコンセプトは現代のGCCでOKです。そのようなPrestigeの導入は、あまり有用ではない、 '匿名のクラス'(ある程度)のように似ています。私はstruct/classをより高いレベルで宣言しています。この断片では省略することができます。
フィールド名(my anyName)は、彼の内部フィールドにアクセスするために重要です。

class BO2Offsets 
    { 
     public: 
      struct Prestige 
      { 
       u32 Offset { 0x000000 }; 
       char One { 0x01 }, 
        Two { 0x02 }, 
        Three { 0x03 }, 
        Four { 0x04 }, 
        Five { 0x05 }, 
        Six { 0x06 }, 
        Seven { 0x07 }, 
        Eight { 0x08 }, 
        Nine { 0x09 }, 
        Ten { 0x0A }, 
        MasterPrestige { 0x0B }, 
        CheatedPrestige { 0x0C }; 
      } anyName; // here !!! 
    }; 
+1

そのような「威信」は使えません。データメンバーではありません。そして、このスレッドで誰もがdownvotingを終了します。 – Srikanth

-1

BO3はあなたのケースでは何もありません。

最初にBO3をキャストする必要があります。

BO2Offsets BO3; 

または

BO2Offsets *BO3; 
+0

あなたはキャストについて何を言いますか?キャストするものは何もありません。 –

0

あなたはそこtypedefを必要としています。今あなたが持っているのは変数宣言です。それはデータメンバではありませんので、あなたの2番目の質問についてはtypedef BO2Offsets BO2;


変更BO2Offsets BO2;、あなたはそのようPrestigeを使用することはできません。インナータイプにアクセスする必要がある場合は、BO2Offsets::Prestige::Offset

+0

私の投稿を編集しました –

+0

typedefを使用せず、C++で廃止されました –

+0

'typedef'はC++で廃止されましたか?何?構造体のためのCスタイルの 'typedef 'は必要ないと知っていますが、古くなったと言っているのはちょっとです。 – Srikanth