今年夏天我一直在编写 NES 模拟器,但遇到了障碍。我正在尝试测试我的 ppu 代码,但由于循环依赖,我无法编译我的代码。
我目前拥有的:
- 三类:cpu、ppu和内存
- 头文件:cpu.h、ppu.h 和 memory.h
- cpp 文件:cpu.cpp、ppu.cpp、memory.cpp 和 main.cpp
依赖性问题在 memory.h 中。目前,ppu.h 包含 memory.h 以便我可以访问 VRAM,而 memory.h 包含 ppu.h 以便我可以根据 cpu 写入内存的内容更新 VRAM 中的标志或地址。我尝试了 ppu 类的前向声明,因为我只使用 ppu 指针,但这失败了。
以下是我的一段带有前向声明的示例代码:
case 0x2000:
ppu->ppuTempAddress |= ((data & 0x03) << 10);
break;
和错误:
In file included from memory.cpp:1:0:
memory.h:7:7: error: forward declaration of ‘class ppu’
memory.cpp:99:10: error: invalid use of incomplete type ‘class ppu’
include "ppu.h" 输出此错误(没有包含就不会发生):
In file included from memory.h:6:0,
from memory.cpp:1:
ppu.h:13:20: error: ‘memory’ has not been declared
ppu.h:63:25: error: ‘memory’ has not been declared
ppu.h:66:29: error: ‘memory’ has not been declared
关于从这里做什么的任何建议?我难住了。