来自另一个类的对象的类向量

时间:2019-07-11 19:26:41

标签: 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;
  };
}

我一直在机器人类的向量中获取错误或错误类型。我想要做的是让环境创建块,然后将其加载到地图上。当机器人拾取这些块时,块对象将被加载到矢量blocks_on_robot中。每当机器人将块放置在平台上时,块对象都将被移动到平台类中的向量。

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

2 个答案:

答案 0 :(得分:0)

您需要在#include文件中"block.h" robot.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

答案 1 :(得分:-1)

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

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