我遇到了类重新定义错误的问题。我得到了一个文件“Arraylist.cpp”和“Arraylist.h”。奇怪的是,讲师在 Arraylist.cpp 中包含了 Arraylist.h 标头保护作为
#ifndef ARRLIST
#define ARRLIST
#include "Arraylist.h"
#endif
对我来说这是有道理的,尽管它真的很奇怪。现在我有一个 Stack 和一个 Queue 类,它们都从 Arraylist 继承,并且有 .cpp 和 .h 文件以及下面列出的适当的标头保护
#ifndef QUEUEARRLIST
#define QUEUEARRLIST
#include "Arraylist.h"
//Code
#endif
#ifndef STACKARRLIST
#define STACKARRLIST
#include "Arraylist.h"
//Code
#endif
在另一个类中,我同时包含了 Stack.h 和 Queue.h。在编译时,我在 Arraylist.cpp 上收到“类重新定义错误”。现在,如果像任何普通人一样将标头保护从 Arraylist.cpp 移到 Arraylist.h 中,我不会收到任何错误,并且一切正常。问题在于我们根本不允许修改讲师代码的作业,所以有什么办法可以解决这个问题,或者我应该告诉教授他应该重新考虑在他的 .cpp 文件中包含标题保护吗?