在不同的命名空间中添加指向 class 的指针时出错?
Error when adding pointer to class in different namespace?
出于某种原因,我一直在
编译时出现“../Svc/../Drv/Timer.h:18:12: error: 'svc' has not been declared”。想不通为什么...
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 */
两个 header 都试图包含对方,这是不可能的。
幸运的是,Timer.h
没有对 TimerManager
做任何要求完整定义的事情;所以不要包含 header,只需声明 class:
namespace svc {class TimerManager;}
出于某种原因,我一直在 编译时出现“../Svc/../Drv/Timer.h:18:12: error: 'svc' has not been declared”。想不通为什么...
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 */
两个 header 都试图包含对方,这是不可能的。
幸运的是,Timer.h
没有对 TimerManager
做任何要求完整定义的事情;所以不要包含 header,只需声明 class:
namespace svc {class TimerManager;}