在不同的命名空间中添加指向 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;}