Хорошо, дай мне посмотреть, пойду ли я тому, что ты пытаешься сделать.
У вас есть класс, который вы создали под названием Operator .
У вас есть vector <Operator *>
, и вы задаетесь вопросом, будут ли проблемы с этим.
Краткий ответ: да, это может быть. Речь идет о области действия вектора, потому что, когда он выходит из области видимости, память, выделенная в куче для всех тех объектов Operator, на которые у вас есть указатели в векторе, НЕ будет очищаться вектором. В неуправляемом языке, таком как c ++, если вы не используете специализированный класс, который заботится о вас, вы должны четко осознавать область видимости и возможные утечки памяти.
Вам необходимо задать себе два вопроса: «Кому принадлежат объекты Оператора?» и "Кто отвечает за очистку объектов Operator , которые были выделены в куче и на которые указывают указатели в векторе?"
Вы можете очистить эту память самостоятельно, когда деструктор вызывается для объекта, которому принадлежит вектор.
Я думаю, вы, возможно, захотите посмотреть на этот ТАК вопрос , который похож. Существуют и другие решения - например, использование классов повышения, которые могут быть лучше.