C++ 向不同命名空间中的类添加指针时出错?

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

因为某种原因,我一直在 “./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;

    };

} /* 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。是的,看起来设计需要一些清理。