C++ 类使用未定义类型

2024-03-23

我有一个我制作的类,我在类上方的线程中使用它。即使我在顶部做了一个类的原型,它仍然会抛出这些错误 错误 C2027:使用未定义类型“foo”

class foo;

DWORD WINAPI demo(LPVOID param)
{
    foo a;
}


class foo
{
public:
int x;
};

尽管我做了一个原型 班级

With a 前向声明 http://en.wikipedia.org/wiki/Forward_declaration您可以创建该类的指针和引用。这是因为指针/引用在所有类/结构/等中表示相同。它们都只是内存地址。因此,例如,您可以在完全定义该类之前创建第二个可以接受或包含指针或引用的类,即:

  class Bar
  {
  private:
      foo* aFoo;
  public:
      Bar(foo* foo2) : aFoo(foo2) {}
  };

然而,直到编译器看到完整的定义类的,你不能实例化它。否则编译器不知道要分配多少内存以及如何调用构造函数和其他方法。在大多数情况下,C++ 期望在使用事物之前对其进行定义。前向声明可以让您稍微解决这个问题,因为任何类的指针和引用都是相同的。因此,您可以向编译器保证稍后将完全定义它。

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

C++ 类使用未定义类型 的相关文章

随机推荐

  • PostgreSQL:间隔“10 天”和当前行之间的范围

    我有一张表 用于存储每件商品的每日价格 如果价格尚未更新 则当天没有该商品的记录 我需要编写一个查询 为每个商品检索最新价格 并具有从当前行日期起 10 天的回溯窗口 否则返回NULL 我想用一个来实现这一点RANGE BETWEEN IN
  • 在 REST Assured 中,如何设置超时?

    我正在使用 RestAssured 2 8 0 我正在尝试设置自己的超时 用于网关超时 因此 如果我在 X 毫秒后没有得到响应 我想中止 I tried public static ValidatableResponse postWithC
  • 使用另一种类型过滤一种类型的键

    我正在尝试创建一种类型 如果它们不出现在另一种类型中 则该类型将递归地排除一种类型中的键 例如 给定两种类型 type TargetType a true b c true d true type InputType a string b
  • Cordova 无法添加 Android 失败,退出代码为 ENOENT

    I am trying to create an Android project with Cordova however i am getting an ENOENT error although i followed the tutor
  • 如何让 emacs 正确显示多字节编码文件?是骡子吗?

    当我打开多字节文件时 我得到 短期内 您可以使用备用编码系统重新访问该文件revert buffer with coding system 然后选择utf 16le 从中期来看 您可以在加载时提高 utf 16le 编码的优先级prefer
  • 获取全文搜索配置语言的完整列表

    to tsvector 支持多种语言 英语 德语 法语 如何获得这些语言的完整列表 有手册中的说明 https www postgresql org docs current textsearch psql html如何使用 psql 检索
  • 在发送给用户之前重命名文件?

    这可能是一个非常简单和愚蠢的问题 但我不知道我会如何去做 我正在用 PHP 为客户端站点构建一些文件托管功能 我在一个目录中有一个中央文件存储库 这是因为如果多人上传同一文件 客户端希望维护每个文件的一份副本 基于文件的 哈希 文件在转储到
  • 使用 SSE 内在函数时如何确保 NaN 传播?

    我最近读到了这篇关于NaNSSE 算术运算中的值 对两个非数字 NAN 参数进行算术运算的结果是未定义的 因此 使用 NAN 参数的浮点运算将与相应汇编指令的预期行为不匹配 Source http msdn microsoft com en
  • 如何在 Spring Data REST 中添加根资源的链接?

    如何在中公开外部资源 不通过存储库管理 资源的根列表Spring Data REST 的 我按照以下模式定义了一个控制器休息金 https github com olivergierke spring restbucks blob mast
  • Chunky 界面含义

    在我正在阅读的 应用程序架构设计 一书中 我发现了以下说法 为了减少往返并提高 通讯性能 设计 厚实的接口 谁能解释一下 厚重的界面 是什么意思 基本上 它是指一次调用中传输的数据量 例如 如果您想从服务器获取一组数据 而不是询问 GetR
  • Geckoview 获取麦克风权限

    我正在尝试使用 GeckoView 元素内网站的录音功能 因此我在 AndroidManifest xml 中设置了权限
  • 闲置/不活动 60 秒后重定向用户?

    如何在我的网站上使用 JavaScript 将用户重定向到 logout60 秒不活动后页面 我知道设置计时器或使用元刷新标记很简单 但我只想重定向不活动的用户 而不是中断某人的活动会话 使用 这可以用 JavaScript 实现吗 您所需
  • 升级到 Babel 7:无法读取 null 的属性“绑定”

    我刚刚升级到Babel 7 https babeljs io docs en index html 从 6 开始 运行以下命令 npm remove babel cli npm install save dev babel cli babe
  • 对象 scalatest 不是包 org 的成员

    我想在 scalatest 中为我的玩具项目编写一些测试 当我使用sbt我通过安装了scalatestlibraryDependencies org scalatest scalatest 2 0 M5 test 在我的项目根目录中buil
  • “foldp”是否违反了 FP 的不可变状态原则?

    我正在学习 Elm七周内增加七种语言 http pragprog com book 7lang seven more languages in seven weeks 下面的例子让我很困惑 import Keyboard main lift
  • vim 中嵌入 awk 语法高亮

    我有一个语法文件 用于突出显示 bash 脚本中嵌入的 awk syn include AWKScript syntax awk vim syn region AWKScriptCode matchgroup AWKCommand star
  • PHPMailer 不发送 CC 或 BCC

    我已经测试以下代码几个小时了 该电子邮件将发送到通过以下方式添加的地址 mail gt AddAddress 在收到的电子邮件中注明了抄送 但抄送人没有收到电子邮件 我到处找过 但找不到解决办法来解释为什么会发生这种情况 我已经运行了测试
  • 获取 iPhone 上已安装应用程序的列表

    有没有办法 某些 API 来获取 iPhone 设备上已安装应用程序的列表 在搜索类似问题时 我发现了一些与url registration 但我认为必须有一些 API 来执行此操作 因为我不想对应用程序执行任何操作 我只想要列表 不 应用
  • 子域名指向同一IIS中的不同网站

    我有一个 IIS 服务器 运行一个默认网站 一个在 LandingPage 路径中运行的 React 应用程序以及一个由 api 中的 React 应用程序使用的 API 所以基本上我有 localhost 80 gt 默认 MVC 网站
  • C++ 类使用未定义类型

    我有一个我制作的类 我在类上方的线程中使用它 即使我在顶部做了一个类的原型 它仍然会抛出这些错误 错误 C2027 使用未定义类型 foo class foo DWORD WINAPI demo LPVOID param foo a cla