c++ - 来自另一个类的对象的类 vector

标签 c++ oop

我正在编写代码来模拟机器人在比赛板上移动、捡起积木并四处移动。目前,我在单独的文件中有 2 个类(实际上有 5 或 6 个,但我只需要学习 1 个):robot.h 和 block.h。这是我的代码示例:

//block.h
namespace rmas{
  class Block{
    //attributes of block
  };
}

//robot.h
namespace rmas{ //Robot Movement Algorithm Simulator
  class Robot{
    vector<Block> blocks_on_robot;
  };
}

我一直在机器人类的 vector 中收到错误或错误类型。我想要做的是让环境创建 block ,然后将它们加载到 map 上。当机器人捡起这些 block 时, block 对象被加载到 vector blocks_on_robot 中。每当机器人将积木放在平台上时,积木对象就会移动到平台类中的 vector 中。

我有点不知道如何(或在哪里)创建这些存储 vector ,(我想我可以稍后使用 vector 索引来传递对象)。我意识到这是一个令人困惑的问题。我可以使用外部函数来远程处理所有事情,但这似乎是我应该能够做的事情,而且该解决方案变得笨拙,需要管理 30 或 40 件事情(最终会是这样)。我是自学成才的,所以我常常不知道去哪里寻找答案。我感谢我能得到的所有帮助!

最佳答案

您需要在robot.h 文件中#include "block.h",因此它应该如下所示:

#include <vector>

#include "block.h"

namespace rmas {

class Robot {
    std::vector<Block> blocks_on_robot;
};

}

这是一个完整的小示例:https://repl.it/repls/PromotedInfantileMathematics
当然,在您的实际项目中,您应该只在头文件中声明 BlockRobot 构造函数,并将定义移动到 block.cpprobot.cpp 分别。

关于c++ - 来自另一个类的对象的类 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56996083/

相关文章:

android - 无法加载库 soinfo_relocate(linker.cpp :975): cannot locate symbol "log2f" referenced by "libvlfeat.so"

c++ - 在 Windows 上使用 ANGLE 和 GLFW 设置 C++ 项目

Javascript 对象构造 : whats the difference?

c++ - 在 Windows 中使用 PTHREAD 互斥?

c++ - 生成随机掷骰子并测量结果的频率

c++ - QProcess::execute ("clear") 问题

c++ - 模板函数以外的 OCaml 多态性示例?

javascript - String 是否继承自 Javascript 中的 Object?

java - 我可以重新编译带有子接口(interface)的公共(public) API 并保持二进制兼容性吗?

java - 调用基于 Spring 的 Web 服务的客户端架构