我有以下头文件:
app.h
#include "log.h"
void CreateAudio(udtPhrase &uPhrase,CLog *uLog);
我得到的错误是'CLog':'class'Type redefinition
有人可以帮忙吗? 我不确定还有什么重要的提及。
谢谢。
答案 0 :(得分:0)
听起来你有一个包含问题,也许你包括log.h
两次。你必须使用包含守卫。
<强> test.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
干杯。
答案 1 :(得分:0)
我认为你将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的前向声明并删除include。前瞻声明如下:
class CLog;
这样做的好处是,你有一个更大的项目,你不需要重新编译很多代码。即如果还有包含app.h的util.h但根本没有使用Clog,那么你可以避免在日志更改时重新编译它。
答案 2 :(得分:0)
我已经更改了log.h文件,添加了
#pragma once
解决了这个问题。