C++ 向不同命名空间中的类添加指针时出错?
因为某种原因,我一直在 “./Svc/./Drv/Timer.h:18:12:错误:'Svc'在编译时未声明”。不明白为什么 Timer.h文件C++ 向不同命名空间中的类添加指针时出错?,c++,pointers,namespaces,C++,Pointers,Namespaces,因为某种原因,我一直在 “./Svc/./Drv/Timer.h:18:12:错误:'Svc'在编译时未声明”。不明白为什么 Timer.h文件 #include "../Svc/TimerManager.h" namespace drv { class Timer { public: void Init(svc::TimerManager *aTimerMan); private: svc::TimerManager *timerMan; }; } /* na
#include "../Svc/TimerManager.h"
namespace drv {
class Timer {
public:
void Init(svc::TimerManager *aTimerMan);
private:
svc::TimerManager *timerMan;
};
} /* namespace drv */
TimerManager.h
#include <stdint.h>
#include "../Drv/Timer.h"
namespace svc {
/*
*
*/
class TimerManager {
public:
uint8_t msec10;
uint8_t sec;
uint8_t min;
uint8_t hour;
void Init();
void IncrementTime();
private:
drv::Timer timer;
};
} /* namespace svc */
#包括
#包括“./Drv/Timer.h”
名称空间svc{
/*
*
*/
类计时器管理器{
公众:
uint8_t msec10;
单位8秒;
uint8_t min;
8小时;
void Init();
void IncrementTime();
私人:
计时器;
};
}/*名称空间svc*/
两个标题都试图包含彼此,这是不可能的
幸运的是,Timer.h
没有对timermager
做任何需要完整定义的操作;因此,不要包含该标题,只需声明类:
namespace svc {class TimerManager;}
如果编写
::svc::timermager
,会发生什么?注意前面的::
。编译器:错误:命名空间“:::”中的“svc”未命名类型。当我在Front中添加::时,是否有可能是一个嵌入式编译器,例如Diab?我知道有些名称空间仍然存在问题。@user2225104:所有编译器都存在循环依赖性问题。刚刚注意到循环的东西lol。是的,看起来设计需要一些清理。