簡體   English   中英

Class 重定義錯誤 C++

[英]Class Redefinition Error C++

我遇到了 Class 重定義錯誤的問題。 我得到了一個文件“Arraylist.cpp”和“Arraylist.h”。 奇怪的是,講師在 Arraylist.cpp 中包含了 Arraylist.h header 防護裝置

#ifndef ARRLIST
#define ARRLIST
#include "Arraylist.h"
#endif

對我來說這是有道理的,盡管它真的很奇怪。 現在我有一個堆棧和一個隊列 class 都繼承自 Arraylist 並且有 .cpp 和 .h 文件以及下面列出的正確 header 防護

#ifndef QUEUEARRLIST
#define QUEUEARRLIST
#include "Arraylist.h"
//Code
#endif

#ifndef STACKARRLIST
#define STACKARRLIST
#include "Arraylist.h"
//Code
#endif

在另一個 class 中,我同時包含了 Stack.h 和 Queue.h。 在編譯時,我在 Arraylist.cpp 上收到“類重新定義錯誤”。 現在,如果像任何正常人一樣將 header 防護裝置從 Arraylist.cpp 移到 Arraylist.h 中,我不會出錯,一切正常。 問題在於我們根本不允許修改講師代碼的作業,所以有什么辦法可以解決這個問題,還是我應該告訴教授他應該重新考慮在 his.cpp 文件中包含 header 保護?

防護應該在 header 文件中。

解決方法(假設您無法編輯原始標題):創建另一個帶有保護的 header 文件,並從那里包含 header 文件。

那是邪惡的功課!

在包括 Arraylist.h 在內的任何文件中:

#ifndef ARRLIST
#define ARRLIST
#include "Arraylist.h"
#endif

分配只是誤導:C/C++ 預處理器只進行文本處理!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM