簡體   English   中英

C ++將類作為參數傳遞

[英]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.

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