Я пытаюсь достичь следующего: один объект менеджера классов пытается создать много объектов класса. управляющий объект передает его как ссылку на рабочие объекты, так что рабочие объекты могут изменять свое поведение в зависимости от состояния объекта-менеджера.Как передать указатель на конструктор объекта при создании объекта с помощью push_back()?
class manager;
class worker{
public:
worker(manager &boss);
};
class manager{
public:
unsigned int currentMethod = 5;
manager(int numofWorkers);
};
Так я пытаюсь осуществить это путем, когда конструктор менеджер вызывается, создать вектор рабочих, и я стараюсь push_back (это) ака объект менеджера.
manager::manager(int numOfWorkers){
std::vector<worker> manyWorkers;
for(int i = 0; i < numOfWorkers;i++){
manyWorkers.push_back(this);
}
}
worker::worker(manager &boss){
std::cout << "Current method is " << boss.currentMethod << std::endl;
}
Путь этот код называется это
int main(int argc, char *argv[]){
manager manag;
return 0;
}
Оказывается, что push_back (это) не проходит «это» в конструктор класса, хотя push_back() вызывает конструктор. Я также пробовал много рабочих (это) .push_back, который тоже не работает.
Как передать указатель на конструктор объекта manyWorkers при создании объекта с помощью push_back()?
Я смущен, что назвать то, что я пытаюсь достичь, и не смог найти решение.
Если вы хотите, чтобы ваш контейнер управлять полиморфных ссылки, вам нужно будет пересмотреть свой контейнер таким образом, что он управляет указателями, или еще лучше, общие указатели на базовый класс. –