两个类互相引用

2023-12-25

假设有两个类,它们相互需要:容器 and item。 班上容器创建类的实例item。类的每个实例item持有类的一个实例容器并且只需要调用该方法按项目调用的方法班级的容器. Class 容器需要查看类的所有字段item.

问题是前向声明:我想在其中有一个前向声明item.h,这样班级item可以有一个容器作为字段并调用方法按项目调用的方法。我怎么做?

Class 容器,它创建项目。

// container.h
#ifndef CONTAINER_H
#define CONTAINER_H

#include "item.h"

class container{

public:
  item * create_item();
  void method_called_by_item(item * i);
};

#endif //CONTAINER_H

实施:

// container.cpp
#include "container.h"

item * container::create_item(){
  return new item(this);
}

void container::method_called_by_item(item * i){
  // do stuff with item
}

班上item,需要调用其中一种方法容器:

// item.h
#ifndef ITEM_H
#define ITEM_H

#include <iostream>

class container;

class item{

public:
  item(container * c);
  void do_something();
  container * c;
};

#endif //ITEM_H

实施:

// item.cpp
#include "item.h"

item::item(container * c){
  this->c = c;
}
void item::do_something(){
  this->c->method_called_by_item(this);
}

在容器.h中

class item; // do not include the item.h

在容器.cpp中

#include "item.h"

在项目.h中

class container; // do not include container.h

在项目.cpp中

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

两个类互相引用 的相关文章

  • 无法使用 strptime() 获取秒数

    我收到 YYYY MM DDThh mm ss S Z hh mm 这种格式的日期时间 我正在尝试使用复制该值strptime如下所示 struct tm time 0 char pEnd strptime datetime Y m dT
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 如何根据功能标志有条件地执行模块级文档测试?

    我正在为一个模块编写文档 该模块具有由 Cargo 功能标志控制的一些选项 我希望始终显示此文档 以便板条箱的使用者知道它是可用的 但我只需要在启用该功能时运行该示例 lib rs This crate has common utility
  • 当我点击软键盘上的“完成”按钮时如何进行下一个活动 android

    当我点击软键盘时 我的键盘被按下或隐藏 但当我点击 Android 键盘上的 完成 按钮时 我想进入下一个活动 那么该怎么做呢 我的下一个问题是 如果我的布局中有 2 个编辑框 当我单击第一个编辑框时 然后在我的软键盘中 将出现 下一个 以
  • 关于大型稀疏矩阵求逆的建议

    刚刚安装了一台 Windows 机器 配备两个 64 位 Intel Xeon X5680 3 33 GHz 处理器 每个 6 核 和 12 GB RAM 我一直在一些大型数据集上使用SAS 但它太慢了 所以我想设置R来进行并行处理 我希望
  • google.visualization.ChartWrapper 组列视图

    我是 Google 可视化 API 的新手 而且我对 JavaScript 不太熟悉 我希望输出按第 2 列中的标签进行分组 请注意 纽约在图表上重复出现 我只想让图表按标签对第 2 列进行分组 并对第 3 列中的数值进行求和 有人知道怎么
  • Haskell 中的实例是什么意思?

    在面向对象的语言 例如 Java 和 Python 中 我们可以从类创建对象 实例 在 Haskell 中 我们可以从类型类创建实例 例如 data ShirtSize S M L Here ShirtSize is a enum data
  • 如何在 Inno Setup 安装程序中捆绑来自 NuGet 包的仅运行时依赖项?

    我正在为一个具有几个运行时 dll 依赖项的程序创建一个安装程序 这些依赖项以 NuGet 包的形式提供 我想知道是否可以以某种方式向 Inno Setup 指定 NuGet 包列表 以便它下载这些包并将相应的 dll 捆绑到我的安装程序中
  • ActiveRecord::HasManyThroughOrderError:不能有 has_many :through 关联

    在我的 Rails 应用程序中 我试图创建一个系统 为用户提供各种成就的徽章奖励 创建了一个表 user badges 移民 class CreateUserBadges lt ActiveRecord Migration 5 1 def
  • 线程安全是原子的还是非原子的?

    我搜索并发现不可变是线程安全的 而可变则不是 这可以 但我得到了误导性的笔记 博客 有关线程安全的原子与非原子的答案 请对答案进行解释 假设有一个名为 name 的原子字符串属性 如果您调用 self setName A 从线程 A 调用
  • 通过 iPhone 的 IP 地址进行地理定位

    我喜欢追踪用户 location 通过使用设备的 IP 地址 我已经寻找过一些 API 服务 例如 自由地理网 api petabyet com ip api com 但我不知道如何使用此服务来获取用户设备的位置 实际上我已经寻找了一些 S
  • HTML CSS自动调整高度

    我试图通过使用 CSS LESS 可视化来显示出港和入境航班 问题是 当出境航班比入境航班有更多的机场变更时 线路将保持在第一个航班的水平 我希望根据最长的路线动态调整线路高度 您能帮我弄清楚如何达到所需的结果吗 UPDATE 准备好了Pl
  • 如何创建可重定位的应用程序

    希望可以有人帮帮我 我有一些用 python 编写的东西 这使用了很多库 因此 我使用 virtualenv 创建了一个虚拟环境 并复制了该环境中需要的每个文件 然后我使用 Platypus 创建了一个 app 当然 该应用程序无法正常工作
  • 网络浏览器搜索是如何实现的?

    我想在桌面应用程序中实现java搜索和突出显示multiple中的短语html文件 就像在网络浏览器中完成的那样 所以html 标签 内 lt and gt 被忽略但有些标签像 b 没有被忽视 搜索示例时each table在文本中 eac
  • 引用 unique_ptr 的向量

    我有一个收藏unique ptrs 在这里 我想取出其中一些并将它们返回给调用者 调用者只需要读取内容 所以我想使用常量引用 但我不知道如何做到这一点unique ptrs 这是我用来使用原始指针执行此操作的一些代码 class entry
  • 从用户处获取字符输入时出现 IndexOutOfBoundsException

    在第15行ch s1 charAt 0 为什么 ch 没有得到 s1 的第 0 个字 即运算符 我尝试过不使用 try catch 方法 但错误与异常有关 现在没有例外 没有错误 但程序不要求操作员并在输入后直接 第一个和第二个值 它显示异
  • PostgreSQL 将列从 inet 转换为文本

    我想更改列的类型inet to text 所以 我执行 ALTER TABLE table ALTER COLUMN col TYPE text 但后来我发现所有值都添加了掩码 例如 192 168 100 141 gt 192 168 1
  • GCM BroadcastReceiver setResultCode 使用

    我正在使用 Android 开发人员提供的 GCM 示例 但无法理解其用途 setResultCode Activity Result OK 哪个组件接收此消息 谁在调用它并接收它 这是例子 public class GcmBroadcas
  • XAML Horizo​​ntalAlignment 属性没有执行我想要的操作

    xaml 代码 在网格内
  • 为遮罩层添加边框

    我正在尝试制作自定义形状UIButton使用遮罩层 我成功了 extension UIButton func mask withImage image UIImage frame CGRect let maskingLayer CAShap
  • Microsoft.Owin.StaticFiles 在控制台主机中工作,但我在文件请求的 IIS 中收到 404

    我在 Owin 管道中设置了 Microsoft Owin FileServer v2 1 0 并且使用 EnableDirectoryBrowsing true 设置 FileServerOptions 非常适合在我的控制台主机和 iis
  • 两个类互相引用

    假设有两个类 它们相互需要 容器 and item 班上容器创建类的实例item 类的每个实例item持有类的一个实例容器并且只需要调用该方法按项目调用的方法班级的容器 Class 容器需要查看类的所有字段item 问题是前向声明 我想在其