C++:标题问题
C++: Header issues
我只是似乎无法用标题赢得。
我有一个类Log
,它有一个定义类Log
的头Log.h,然后Log.cpp实现了Log
的方法。我需要它在Main.cpp中可用,所以我将Log.h包含在Main.cp中,我收到了臭名昭著的"已定义"错误。
如果我从Main.cpp中取出头,我就无法使用该类。如果我从Log.cpp中取出头,那么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仅为#include "Log.h"
。
您是否包含include guard?
日志.h
#ifndef LOG_H
#define LOG_H
// your code here
#endif
听起来你可能没有包含警卫?尝试在头文件的顶部添加:
#ifndef LOG_HEADER_FILE
#define LOG_HEADER_FILE
然后在头文件的底部:
#endif
问题最终是包含的顺序。为了避免重新定义问题,必须先包含一些include,然后再包含其他include。
这是相当模糊的,但很可能您需要在标头中包含一些保护。如果你使用的是MSVC,顶部的#pragma once
就可以了。如果不是,可以使用标准的东西,比如:
#ifndef LOG_H_
#define LOG_H_
///Rest of header file
#endif
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 标题与标准标题具有相同名称但大小写不同的问题
- 为什么#Define会在标题中引起问题
- QHeaderView::ResizeToContent在QTableView中垂直标题的性能问题
- Visual SDKDDKVER.H缺少,但是安装了WinSDK?(C 标题问题)
- 标题文件问题中的类定义
- C++:标题问题
- 我在function.cpp文件中有我的标题问题
- Qt 5.0,包括个人标题问题