Вектор класса объектов из другого класса - PullRequest
1 голос
/ 11 июля 2019

Я пишу код для симуляции робота, который двигается по игровой доске, подбирает блоки и маневрирует.На данный момент у меня есть 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 голосов
/ 11 июля 2019
//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;
  };
}
0 голосов
/ 11 июля 2019

Вам необходимо #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
OfКонечно, в вашем реальном проекте вы просто должны иметь объявления конструкторов Block и Robot в заголовочных файлах и переместить определения в block.cpp и robot.cpp соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...