C++: header 问题

标签 c++ class header-files

看来我只是不能用头球取胜。

我有一个 Log 类,它有一个定义类 Log 的 header Log.h,然后 Log.cpp 实现了 Log 的方法。我需要它在 Main.cpp 中可用,所以我将 Log.h 包含到 Main.cpp 中,但我收到了臭名昭著的“已定义”错误。

如果我从 Main.cpp 中取出 header ,我将无法使用该类。 如果我从 Log.cpp 中取出 header ,那么 Log(显然)未定义。

我赢不了!我该怎么办?

编辑 是的,我当然包括守卫。

#ifndef LOG_H_
#define LOG_H_

namespace vexal {

#define CCOL_RESET  "^[[0m"
#define CCOL_RED    "^[[31m"

class Log {
public:
    Log();
    virtual ~Log();
    static void genInstance();
private:
    static Log* _inst;
};

}

#endif /* LOG_H_ */

然后在 Log.cpp 和 Main.cpp 中的包含仅仅是 #include "Log.h"

最佳答案

你包括守卫了吗?

日志.h

#ifndef LOG_H
#define LOG_H

// your code here

#endif

关于C++: header 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9169516/

相关文章:

c++ - 如何手动创建带有 XML 属性的 boost ptree?

c++ - Qt 5.2.1 添加wwWidgets到项目中

c++ - 使用 OpenCV 对图像产生涡旋效应

javascript - 类方法作为 JavaScript 中的事件处理程序?

c++ - 我的复制构造函数导致使用我的类的方法失败。有人可以看一下并告诉我我做错了什么吗?

c++ - 如何在 .h 文件中定义函数体?

c++ - 为什么 Qt 告诉我 : expected class name?

c++ - 用于在 LLVM 中编写 pass 的高级工具

Java - 从另一个类的 ArrayList 中读取

android - arm-gcc编译器编译的c代码的头文件