将指针添加到不同命名空间中的类时出错

Error when adding pointer to class in different namespace?

本文关键字:出错 命名空间 指针 添加      更新时间:2023-10-16

由于某种原因,我一直得到"../svc/../Drv/Timer.h:18:12:错误:编译时未声明"svc"。不知道为什么...

计时器.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 */

两个标头都试图相互包含,这是不可能的。

幸运的是,Timer.h 不会对需要完整定义的TimerManager做任何事情;所以不要包含该标头,只需声明类:

namespace svc {class TimerManager;}