[英]C++ passing a class as an argument
我有以下頭文件:
應用程序
#include "log.h"
void CreateAudio(udtPhrase &uPhrase,CLog *uLog);
我得到的錯誤是“ CLog”:“ class”類型重新定義
有人可以幫忙嗎? 我不確定還有什么重要的要提。
謝謝。
聽起來您有一個include問題,也許您兩次包含了log.h
您必須使用一個包括衛隊。
測試
#ifndef TEST_H
#define TEST_H
struct foo {
int member;
};
#endif /* TEST_H */
現在,如果兩次包含此test.h
,則將一次定義struct foo
,因為已經定義了TEST_H
。
更新:更深入地了解一下: https : //en.wikipedia.org/wiki/Include_guard
干杯。
我認為您包括兩次log.h。 您至少應添加一些標題防護:
#ifndef some_unique_token_for_log_h
#define some_unique_token_for_log_h
definitions
#endif
這樣可以防止您的錯誤。 如果可以避免在app.h中包含log.h,那就更好了。 您可以在app.h中進行CLog的前向聲明,並刪除包含。 前向聲明如下所示:
class CLog;
這樣做的好處是您有一個更大的項目,不需要重新編譯很多代碼。 也就是說,如果還有util.h包含app.h但根本不使用Clog,那么可以避免在日志更改時重新編譯它。
我已經更改了log.h文件,添加了
#pragma once
這解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.