在C++中跨多个文件在多个命名空间中使用类
Using a classes within multiple namespaces across multiple files in C++
我使用avr-g++
(AVR微控制器的C++编译器)编译以下代码时遇到问题。
#ifndef SPI_H_
#define SPI_H_
#include "../LIBcpp.hpp"
namespace uC
{
namespace SPI
{
class Device
{
private:
SPI* m_SPI;
uC::IO::Pin* m_CSPin;
ChipSelectPolarity m_CSPolarity;
public:
Device(SPI& _SPI, uC::IO::Pin& _CSPin, ChipSelectPolarity _CSPolarity);
void Select();
void DeSelect();
void WriteByte(uint8_t _Data);
uint8_t WriteReadByte(uint8_t _Data);
void WriteBytes(uint8_t _Data[], uint8_t _DataLength);
void WriteReadBytes(uint8_t _Data[], uint8_t _ReadBuffer[], uint8_t _DataLength);
};
}
}
#endif /* SPI_H_ */
请注意,我在这个文件中定义了几个枚举和类,这些枚举和类在这个类中使用,但为了防止代码太长而没有包括在内。
我收到错误
'IO' in namespace 'uC' does not name a type
'uC::IO' has not been declared
expected ',' or '...' before '&' token
在我的项目中,我有几个文件代表我正在处理的项目的特定modules
。这些文件位于名为Modules
的子目录中。头文件LIBcpp.hpp
在其上面的目录中。它包括Modules
子目录中的所有头文件。
类Pin
是在名称空间IO
内定义的,该名称空间位于名称空间uC
内。这个类是在一个名为IO.hpp
的头文件中定义的,该头文件包含在LIBcpp.hpp
中。
我尝试过的:
在SPI.hpp
头文件中包含IO.hpp
头文件-导致相同的错误
我不知道如何解决这个错误。如果需要更多的代码或信息来解决这个问题,我会提供它。
谢谢!
这是IO.hpp
,根据要求:
#ifndef IO_H_
#define IO_H_
#include "../LIBcpp.hpp"
namespace uC
{
namespace IO
{
class Port
{
//Contents removed
};
class Pin
{
//Contents removed
};
}
}
#endif /* IO_H_ */
类"Pin"是在命名空间"IO"中定义的,该命名空间位于命名空间"uC"。此类是在名为的头文件中定义的"IO.hpp",包含在"LIBcpp.hpp".中
但CCD_ 14包括CCD_。你有圆形夹杂物——这是非常糟糕的。您必须更改收割台结构,这样就不会出现圆形夹杂物。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到