5

編集できない (許可されていない) ヘッダー ファイルに次の構造体が定義されています。

struct Programma
{
enum {SERIE, FILM} programmaType;

char* titel;
char* zender;

time_t start;
time_t einde;

char* review;

union 
{
    Serie* serie;
    Film* film;
} typeData;
};

私はもう試した:

Programma asd;

asd.programmaType = SERIE; //Error: identifier 'SERIE' is undefined
asd.programmaType = 0; //Error: a value of type 'int'cannot be assigned to an entity of type 'enum PRogramma::<unnamed>

'.' を置換するパラメーターとして Programma 構造体へのポインターを持つ関数内。「->」によって、同じエラーが発生しました。

ここで提案されているのと同じことをしていると思います ( ANSI C の構造体内で列挙型を使用する方法は? ) が、ランダム エラーが発生するのを止めることはできません。

編集: Visual Studio で asd と入力すると、何らかの理由で. 通常のドロップダウン ボックスが表示されますが、「Typedata」、「SERIE」、「FILM」のオプションがあります。個人的には、構造体の宣言に何か問題があると思いますが、それは与えられたものであり、編集する必要はありません。

EDIT EDIT: Visual Studio 2008 で C++ プロジェクトを作成していますが、すべてのソース ファイルは .h または .c です。これは私たちが「C」として教えられてきたことですが、それが実際にどれほど真実なのか疑問に思い始めています.

4

4 に答える 4

5

エラー メッセージを見ると、実際には C プログラムではなく C++ プログラムが使用されているようです。そのためには、次のようにスコープ演算子を使用する必要があり:: ます

asd.programmaType = Programma::SERIE;
于 2013-03-04T15:04:03.877 に答える
3

C を想定すると、(typedef なしで) 構造体を正しく宣言していません。

試す:

struct Programma asd;
于 2013-03-04T15:06:05.830 に答える
1

交換

Programma asd;

struct Programma asd;

それならasd.programmaType = SERIE;受け入れるべきです。

于 2013-03-04T15:08:00.030 に答える
0

試す

asd.programmaType = Programma::SERIE;
于 2013-03-04T15:04:24.717 に答える