2016-12-05 4 views
1

私はエラーを得た:このコードで何かのメンバーのための要求ではない構造体または共用エラー:このコードで何かのメンバーのための要求ではない構造体または共用

int main() { 
    char Oberon; 

    struct Oberon { 
    short borsa_oro; 
    short punti_ferita; 
    short incantesimi; 
    short pozione_guaritrice; 
    short veleno; 
    char armatura; 
    char arma; 
    }; 

    Oberon.borsa_oro=10; 
    Oberon.punti_ferita=5; 
    Oberon.incantesimi=2; 
    Oberon.pozione_guaritrice=5; 
    strcpy (Oberon.armatura, "Vesti del mago"); 
    strcpy (Oberon.arma, "Spada di Oberon"); 

    return 0; 
} 

私は何をすべき?

+1

1) '文字オベロン;' 'オベロンオベロンを構造体への変更;)'と '構造体オベロン{...}' – BLUEPIXY

+0

2の後に移動します'char armatura; char arma; ' - >' char armatura [32]; char arma [32]; ' – BLUEPIXY

+1

" *どうすればよいですか?* "コンパイラの警告/エラーメッセージがあなたを指しているコード行をよく見ていますか? – alk

答えて

0

これは構造体の使用方法ではありません。同じ名前のcharがある場合は、char Oberon;を削除または名前を変更します。

構造体はデータ型を記述するだけですが、まだの初期化のようになります。 例:

struct person { 
    int age; 
    ... 
}; 

struct person p; 
p.age = 10; 

私はあなたがplayer構造体のようなものを作成し、構造体プレーヤーですオベロンを作成するためのものだと思い

typedef struct person { 
    int age; 
    ... 
} person; 
person p; 
p.age = 10; 
3

のtypedefを使用、それを簡素化します。

また、メモリのブロックをarmaturaarmaに関連付けることも忘れています。

また、構造体が定義される前に、playerのインスタンスを作成しようとしました。

だから私は、あなたが意味することは、このだったと思う:

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 

    struct player { 
     short borsa_oro; 
     short punti_ferita; 
     short incantesimi; 
     short pozione_guaritrice; 
     short veleno; 
     char armatura[50]; 
     char arma[50]; 
    }; 

    struct player Oberon; 

    Oberon.borsa_oro = 10; 
    Oberon.punti_ferita = 5; 
    Oberon.incantesimi = 2; 
    Oberon.pozione_guaritrice = 5; 
    strcpy (Oberon.armatura, "Vesti del mago"); 
    strcpy (Oberon.arma, "Spada di Oberon"); 

    printf("Oberon ha %d oro e utilizza la armatura %s\n", Oberon.borsa_oro, Oberon.armatura); 

    return 0; 
} 
+0

私の問題を解決してくれてありがとう – Derio

関連する問題