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”的选项。就我个人而言,我认为结构的声明有问题,但它是给定的,我不应该编辑它。

编辑编辑:我正在 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 回答