對於學校我必須寫一個議程,它保存有關考試,任務數據和講座C程序設計:訪問枚舉值
我無法在我的結構訪問一個枚舉。
我的結構如下所示:
struct Item{
enum {TASK, EXAM, LECTURE} entryType;
char* name;
char* course;
time_t start;
time_t end;
union
{
struct Task* task;
struct Exam* exam;
struct Lecture* lecture;
} typeData;
};
現在我用我的枚舉設置的項目類型。 該結構在Item.h中定義。 在Item.c包括Item.h我使用以下代碼:
struct Item* createItem(char* type){
struct Item* newItem;
newItem = (struct Item *) malloc (sizeof(struct Item));
if (strcmp(type, "Task") == 0)
{
//newItem->entryType = newItem->TASK;
newItem->typeData.task = createTask();
} else if (strcmp(type, "Exam") == 0)
{
//newItem->entryType = newItem->EXAM;
newItem->typeData.exam = createExam();
} else if (strcmp(type, "Lecture") == 0)
{
//newItem->entryType = newItem->LECTURE;
newItem->typeData.lecture = createLecture();
}
return newItem;
}
的註釋的代碼給我的錯誤(TASK例如):
錯誤C2039: '任務':不'Item'的成員
'TASK'不是'任務'。 – 2013-08-03 14:46:32
你在做什麼字符串比較?如果你使用的是枚舉,沒有理由使用'strcmp'。枚舉成員就像整數一樣工作。 –
另外,[不要強制轉換'malloc()']的返回值(http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858)。 – 2013-08-03 14:47:51