使用双指针进行动态分配

2023-12-21

我有一个基类 Toy 和派生类 Toy_remote_car amd Toy_battery_car。

我正在这样做:

Toy** ptr;
ptr=new Toy*;
ptr[0]=new Toy_remote_car[1];
ptr[1]=new Toy_battery_car[1];/*this is completely wrong according to my teacher because i never created ptr[1]. Instead this is a misuse of memory according to him.*/

上面的代码(ptr=new Toy*) 创建了一个 Toy(ptr[0]) 类型的单个指针,其中包含派生类 Toy_remote_car 的对象。

现在我想写这样的代码:

->玩具类型指针的数量不应被预定义。

->相反,我会调用一个 add_toy 函数,它将创建一个指向我想要的对象类型的 ptr 。此外,如果我再次调用 add_toy 函数,它不应该将数据分配给以前的 ptr,但它应该创建一个新的 ptr。以下约定可能会有所帮助:

ptr[0]=new Toy_remote_car[1];
/*we want to add more toys so add_toy function called. A check is applied.*/
/*The check checks that ptr[0] already contains a value so it creates another pointer ptr[1]*/
ptr[1]=new Toy_battery_car[1];

->此外,我将能够访问所有以前的数据。简而言之:

ptr[0]//contains one type of data.
ptr[1]//contains another type.
//and so on

-> 因此,每当添加新玩具时,它都会自动创建 Toy 类型的指针(ptr)。

我希望我已经很好地解释了我想在这段代码中实现的内容。

请在这方面帮助我。

Thanks


Toy **ptr = new Toy *[n];

where n持有数量Toy你想要的指针。增长数组很困难,但可以做到:

// Add x to toypp, an array of n pointers
// very stupid, linear-time algorithm
Toy **add_toy(Toy *x, Toy **toypp, size_t n)
{
    Toy **new_toypp = new Toy*[n+1];

    // copy the old array's contents
    for (size_t i=0; i<n; i++)
         new_toypp[i] = toypp[i];
    toypp[n] = x;

    // clean up
    delete[] toypp;

    return new_toypp;
}

请注意,如果分配失败,旧的toypp并且其中的所有指针都没有被清除。实际上,如果你想要一个不断增长的数组,请使用vector<Toy*>反而:

vector<Toy*> toy_ptrs(n);

并添加玩具push_back.

别忘了delete每一个Toy*,并用第一种方法,delete[] the Toy**.

可以通过继承来处理各种类型的数据。

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

使用双指针进行动态分配 的相关文章

  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 按成员序列化

    我已经实现了template
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • Flask SQLAlchemy - 仅针对当前会话设置 expire_on_commit=False

    我该如何设置该选项expire on commit False仅适用于 Flask SQLAlchemy 中的当前会话 我可以在初始化时设置该选项SQLAlchemy对象 db SQLAlchemy app session options
  • 无需拥有 Mac 即可构建 iOS 应用程序? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如果我错了 请纠正我 我是移动开发新手 我想开发一个应用程序提交到苹果商店 但我对正在开发应用程序的 Mac 的价格感到非常沮丧 假设我确
  • 进程死亡后的内存泄漏和其他资源

    假设一个程序存在内存泄漏 1 当进程死亡 通常或分段错误 时 那些泄漏的内存是否被释放 2 那又怎么样其他资源一个过程成立吗 对于大多数现代操作系统 Linux Windows NT 3 5 左右 来说 是的
  • 如何配置我的 makefile 以进行调试和发布版本?

    我的项目有以下 makefile 我想将其配置为发布和调试版本 在我的代码中 我有很多 ifdef DEBUG宏已就位 因此只需设置该宏并添加 g3 gdwarf2给编译器的标志 我怎样才能做到这一点 CC g g3 gdwarf2 cc
  • 更改后重新处理请求

    我正在尝试使用passport js以通用方式 在调用之前更改配置authenticate 但我找不到之后将请求重定向到它的方法 我这样处理请求 入口点 app get authorize clientId network authUtil
  • zmq::message_t发送后可以重复使用吗?

    我正在使用 ZeroMQ 来实现一个玩具通信协议 这是我第一次使用这个框架 库 现在 在我的协议中 某一方发送多个连续消息 所有消息都具有相同的大小 所以 我想 我会避免重新分配它们 而只是尝试用不同的内容重新填充消息数据缓冲区 例如 zm
  • 从 python 嵌套列表在 pandas 中创建新列

    我有一个熊猫数据框 其中一列有一个嵌套列表 我想从嵌套列表创建新列 Example L 1 2 4 5 6 7 8 9 3 5 我希望嵌套列表中的所有元素都作为列 如果列表有该元素 则该值应为 1 如果没有 则该值应为零 1 2 4 5 6
  • SDK 错误:0x8D07,在 C# 中使用 Canon SDK 时

    我只下载源教程here http www codeproject com Articles 688276 Canon EDSDK Tutorial in Csharp 当我连接佳能 70D 运行它时 出现以下错误 我错过了什么重点 错误 错
  • ajax请求时禁用按钮

    我编写了一条指令 有助于在 ajax 请求挂起时禁用按钮 这是我的指令 directive requestPending http function http return restrict A scope requestPending l
  • 如何检查数组是否为空或存在?

    第一次加载页面时 我需要检查是否有图像image array并加载最后一张图像 否则 我禁用预览按钮 提醒用户按下新图像按钮并创建一个空数组来放置图像 问题是image array in the else一直开火 如果数组存在 它只是覆盖它
  • vim 中的向后杀字?

    是返回并删除一个词的最快方法Esc or Ctrl and db 我想我搞砸了很多 P 并且习惯了使用M
  • Spring Boot - 自动装配数据源 Bean

    我有一个基本的 Spring Boot 应用程序 注释如下 SpringBootApplication public class ApiApplication public static void main String args Spri
  • java Finals 是否有助于编译器创建更高效​​的字节码? [复制]

    这个问题在这里已经有答案了 可能的重复 Java中使用final关键字会提高性能吗 https stackoverflow com questions 4279420 does use of final keyword in java im
  • 获取 Facebook 页面拥有的事件列表

    有谁知道如何获取 Facebook 页面拥有 创建 的活动列表 我似乎能够使用 graph api 来生成实体参加的事件列表 我还查看了 FQL 但它似乎要求 where 子句是可索引字段 当然 id 是唯一可索引字段 为了获得奖励积分 我
  • vista有没有API来检测桌面是否全屏运行?

    例如 用户是否全屏播放电影 或者以全屏模式查看 powerpoint 我发誓我以前见过 IsFullScreen Interactive API 但现在找不到它 我是这样解决这个问题的 using System using System C
  • 将 Java 系统退出值返回到 bash 脚本

    我正在尝试从 java 程序获取返回值 System exit 1 到 shell 脚本中 但它似乎返回 jvm 退出代码 如果它不崩溃 则该代码始终为 0 出于测试目的 这是我的 main 中的第一行 有人知道怎么做吗 我的bash代码
  • SELECT COUNT(*) - 如果没有匹配的行,则返回 0 以及分组字段

    我有以下查询 SELECT employee department count AS sum FROM items WHERE employee 1 AND department 2 OR employee 3 AND department
  • asyncore python 挂起

    我尝试使用 asyncore 做简单的异步 http 客户端 这段代码工作正常并且输出 足够快 www gmail com recv http code 301 www yandex ru recv http code 200 www py
  • 重复一段代码固定次数

    我试图在不使用条件的情况下重复一段代码 但仍然只重复特定次数 基本上是这样的 repeat 50 Do stuff here 有没有办法做到这一点 除了复制粘贴50次之外 我这样做是因为我想如果我知道我想重复某件事多少次 它会比每次都检查条
  • 使用双指针进行动态分配

    我有一个基类 Toy 和派生类 Toy remote car amd Toy battery car 我正在这样做 Toy ptr ptr new Toy ptr 0 new Toy remote car 1 ptr 1 new Toy b