当类包含在另一个类中时,为什么不转发类工作的声明

2023-12-01

这编译

#include "Sprite.h"

class GameObject
{
  public:
      int x, y, w, h;
      Sprite sprite;
  public:
    GameObject();
    GameObject(int _x, int _y, int _w, int _h);
    virtual ~GameObject();
};

这不

class Sprite;

class GameObject
{
  public:
      int x, y, w, h;
      Sprite sprite;
  public:
    GameObject();
    GameObject(int _x, int _y, int _w, int _h);
    virtual ~GameObject();
};

我知道我可以转发声明并使用 Sprite 的指针,但为什么转发声明在这里不起作用。 不“对 Sprite 进行分类;”告诉 Sprite 存在? 我正在尝试在 .cpp 中 #include 尽可能多的类,并不惜一切代价避免在 .h 中使用它。 此外,类之间不包含彼此,因此无需使用 Sprite*。 我想我对前向声明的理解是错误的,或者是因为我不明白为什么这不起作用的原因。

提前致谢。


假装你是编译器。没有完整的声明Sprite在您的掌握中,如何确定是否Sprite是只有一个字节大,还是十万字节大?

当您只需要一个指向该类的指针(或对一个类的引用,或其他一些小事情)时,您不需要对该类了解太多;但是当您需要实际使用该类时,仅仅前向声明是不够的。仅仅知道这一点并不总是足够的“Sprite存在”;有时还需要知道它有多大。如果没有完整的声明,这是不可能的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当类包含在另一个类中时,为什么不转发类工作的声明 的相关文章

随机推荐

  • 我应该为 User 类的唯一实例使用哪种模式?

    我有这个用户类 class User private logged false private id public function User gt Check if the user is logged in with a cookie
  • 获取 ember 中的操作目标元素

    如何获取触发单击事件的目标元素的对象 例如 如果我有一个类似的模板 table tr th Type th tr table 在我的控制器中 我定义了相应的操作 如下所示 action someAction function get the
  • Mod_rewrite 隐形:当目标是文件时有效,而不是目录时有效

    我有这个重写规则 将 foo com test 或 foo com test 转换为 foo com test txt RewriteRule test test txt NC L 它工作得很好 重要的是 永远不会向用户透露 真实 URL
  • 适用于 Linux 的 Azure 扩展脚本

    我尝试使用适用于 Linux 的 Azure 自定义扩展脚本 通过使用 分隔每个命令来执行多个 shell 脚本 ARM 模板是部署模型 示例片段 settings fileUris script1 script2 script3 comm
  • 如果使用 Bash 目录为空,则不显示结果

    例如 在空目录中尝试以下命令 for i in do echo i done 有没有办法抑制打印输出 Set nullglob shopt s nullglob for i in do echo i done
  • 检查硬盘上是否有坏扇区

    最近 在几次断电之后 我的电脑变得非常混乱 时不时地出现蓝屏死机 整个操作系统的行为非常奇怪 现在我的程序在我的计算机出问题之前运行得非常好 该程序基本上只是使用以下命令创建一个文件CreateFile并使用写入WriteFile 这个程序
  • 调试在 Gunicorn 中运行的 Flask 应用程序

    我一直在为我的应用程序使用 nginx gunicorn 和 Flask 开发一个新的开发平台 在操作方面 一切正常 我遇到的问题是调试 Flask 层 当我的代码中出现错误时 我只会直接向浏览器返回 500 错误 并且控制台或日志中不会显
  • 将任何单词替换为其自身的修改版本

    我正在寻找一种简单的方法来转动这个字符串 java javascript vbscript 进入这个字符串 str search java str search javascript str search vbscript 即用以下内容替换
  • 当 Android 4.1.2 (Samsung Galaxy s2 gt-i9100) 的 Manifest.xml 中未指定 android:targetSdkVersion="17" 时,视图(按钮)不可见

    我使用了片段并在每个片段中显示文本动画 在我的 Fragment 活动中 我选择了 下一步 按钮并将其设置为不可见 在片段中完成文本动画后 我使按钮可见并应用 TranslateAnimation 当我在带有 Jelly Bean 的 Sa
  • 使用 php 群发邮件程序还是简单地使用 mail()?

    我正在发送约 30 000 封电子邮件 每条消息的内容都会略有不同 我已经使用 php 阅读过mail 功能对于群发邮件来说不是一个好主意 使用内置的优点和缺点是什么mail 使用群发邮件程序的功能和优缺点 例如斯威夫特梅勒 特别要注意的是
  • 如何从 iPhone 上的用户相册加载图像?

    我想从用户的相册中随机加载图像 但我不想访问图像选择器 即我希望图像是随机背景图像 有谁知道这是否可能 除了 UIImageWriteToSavedPhotosAlbum 之外 我找不到任何参考文献 编辑 我正在尝试在 iPhone 应用程
  • Excel合并多行

    我觉得我错过了一些我想用 Excel 做的简单事情 但我在 Google 上错误地提出了这个问题 就这样 我正在查看一位经营比赛计时公司的朋友的一些 Excel 表格 在一场比赛结束时 他有一张 Excel 表格 其中包含一系列比赛的以下格
  • 将 SVG 过滤器内联为数据 URI

    我尝试使用 CSS 中的数据 URI 添加 SVG 过滤器 但无法将效果应用到我的图像 似乎应该支持它 因为根据 caniuse 所有主要浏览器都支持数据 URI 和 SVG 过滤器 如果我将其保存为 SVG 文件并链接到 css 中的文件
  • 如何在 Android 上的 WebRTC 通话期间将麦克风录制为更压缩的格式?

    我有一个应用程序调用使用WebRTC 但在通话过程中 我需要录制麦克风 WebRTC有一个对象WebRTCAudioRecord录制音频但音频文件太大 PCM 16bit 我想录制但尺寸较小 我试过了MediaRecorder但这不起作用
  • 如何修复 OCaml 中的代码错误?

    我是 OCaml 新手 刚刚找到了在线 OCaml 指南 http try ocamlpro com 到了第五课 我陷入了一些练习中 所以 问题来了 修复所有这些 let 表达式 以便最终获得预期结果 1 let xy let x x an
  • 具有范围的子数组

    我试图将一个对象数组拆分为包含 32 个对象的较小数组 剩下的大约最后放入数组中 这是我正在使用的代码 int a sharedManager inventoryArray2 count float b a 33 int c ceilf b
  • BeginRequest 在 ASP.NET MVC 应用程序中触发静态文件

    我的印象是静态文件 CSS 图像 font face 文件等 完全绕过 ASP NET 并直接由 IIS 提供服务 但是 每个 HTTP 请求都会调用我的 BeginRequest 事件处理程序 包括静态文件的请求 这让我担心 因为我正在创
  • 如何使旧版扩展 (tfs 2013) 在 tfs 2015 update 2 中工作?

    我们让这个扩展在 tfs 2013 下工作 它只是隐藏了积压项目的快速添加面板 请参见下面的代码 我们将服务器更新到 tfs 2015 2 后 代码停止工作 无法使用 VSTS 扩展的新框架 请参阅上一个问题 这是 JavaScript 代
  • 使用包含浮点数组的 OpenCL 将结构传递到 GPU

    我目前有一些数据想要传递到我的 GPU 并将其乘以 2 我创建了一个结构 可以在这里看到 struct GPUPatternData cl int nInput nOutput patternCount offest cl float pa
  • 当类包含在另一个类中时,为什么不转发类工作的声明

    这编译 include Sprite h class GameObject public int x y w h Sprite sprite public GameObject GameObject int x int y int w in