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

标签 c++ pointers namespaces

<分区>

出于某种原因,我不断得到 编译时出现“../Svc/../Drv/Timer.h:18:12: error: 'svc' has not been declared”。想不通为什么...

定时器.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 ,只需声明类:

namespace svc {class TimerManager;}

关于c++ - 在不同命名空间中添加指向类的指针时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28932644/

相关文章:

添加输出文件后 C++ 代码无法正确编译

c++ - Namespace or Class,只封装函数成员哪个更好

c++ - 多个小部件的信号和插槽

c++ - WMI 和 Windows 服务之间的通信

c++ - 如何检查是否正在编译一段C++代码?

c - 指针所需的基本帮助(双重间接)

C++:将链表传递给静态函数

linux-kernel - 取消共享/隔离挂载命名空间

namespaces - 在不同的命名空间中具有相同名称的类型是否可以接受?

python - 使用来自串行端口的字符串数据来操作振镜扫描仪在更高速度下出错