c++变量作用域的类友
C++ variable scope for class friends
我有:
class Game...
class D3DGraphics...
我在Game类中声明了一个名为gfx的D3DGraphics类型变量。
我又创建了几个类:
class Font...
class Viewport...
我使它们都是D3DGraphics的朋友,并在D3DGraphics类中声明变量:
Font font;
Viewport viewport;
最后在我的D3DGraphics我有一个变量公开:
LPDIRECT3DDEVICE9 d3dDevice;
我的字体类不能看到d3dDevice,即使它是D3DGraphics的朋友?
为什么?
编辑:://现在已经改变了代码,通过外部类推送指针:https://github.com/jimmyt1988/TheGame/tree/master/TheGame
- windows.cpp//我在这里创建我的游戏对象并通过我的hWnd。
- Game.cpp/Game.h
- Font.cpp/Font.h
- D3DGraphics.cpp/D3DGraphics.h
- Viewport.cpp/Viewport.h
至少如果理解正确的话,你期望友谊是传递的——也就是说,A是B的朋友,B是C的朋友,所以你期望A是C的朋友。
如果你的代码看起来像
class Font {
...
friend class D3DGraphics;
...
}
那么没有
它就不能工作class D3DGraphics {
...
friend class Font;
...
}
友谊不是相互的。如果A
声明B
为友元,则A
对象没有B
对象的特权。
(顺便问一下,文件已经出现,并且支持我的假设)Font.h
的内容在哪里
同样,D3DGraphics.h
和Font.h
是循环依赖的,Font.h
没有include保护;首先包含它将包含它两次,这可能导致编译器抱怨重新定义class Font
。
相关文章:
- 在类函数中初始化外部作用域变量
- 不同作用域中的静态变量和全局变量
- 未在此作用域中声明的函数和变量 (C++)
- 如何在C++中访问作用域的变量输出?
- 不同块作用域中的 C++ 变量具有相同的地址
- "变量":函数中函数作用域不允许初始化的自动或寄存器变量'naked'
- Tictactoe 游戏变量未在作用域中声明
- C++If语句变量作用域
- 即使在离开作用域后,如何访问在堆上分配的变量C++?
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 局部变量的作用域是块或函数
- 当变量在多个函数作用域中使用时,我应该在类 private 中声明该变量吗?
- C++11 外部作用域变量声明为 auto
- 是一个初始化为未确定值或未初始化的本地作用域变量
- 命名空间作用域变量的c++初始化
- c++双删除文件作用域变量,链接问题
- 线程局部全局作用域变量
- 嵌套while循环中的作用域变量
- 如何从函数内部修改作用域变量
- c++中不一致的文件作用域变量行为