объединение двух объектов из массива объектов [duplicate]

Я просто столкнулся с проблемой нарезки и тут же приземлился. Итак, позвольте мне добавить мои два цента к этому.

Приведем пример из «производственного кода» (или что-то вроде близкого):


Допустим, у нас есть то, что рассылает действия. Например, пользовательский интерфейс центра управления. Этот пользовательский интерфейс должен получить список вещей, которые в настоящее время могут быть отправлены. Поэтому мы определяем класс, содержащий информацию о доставке. Назовем это Action. Таким образом, Action имеет некоторые переменные-члены. Для простоты мы имеем только 2, являющиеся std::string name и a std::function<void()> f. Затем он имеет void activate(), который просто выполняет член f.

Таким образом, пользовательский интерфейс получает std::vector<Action>. Представьте себе некоторые функции, такие как:

void push_back(Action toAdd);

Теперь мы установили, как это выглядит с точки зрения пользовательского интерфейса. Пока нет проблем. Но какой-то другой парень, который работает над этим проектом, внезапно решает, что существуют специальные действия, требующие дополнительной информации в объекте Action. По какой причине. Это также можно решить с помощью лямбда-захватов. Этот пример не принимается 1-1 из кода.

Итак, парень происходит от Action, чтобы добавить свой собственный вкус. Он передает экземпляр своего урожая в класс push_back, но затем программа переходит в haywire.

Итак, что случилось? Как вы могли предположить : объект был отрезан.

Дополнительная информация из экземпляра потеряна, а f теперь подвержен неопределенному поведению.

]

Надеюсь, что в этом примере рассказывается о тех людях, которые не могут себе представить, когда говорят о A s и B в какой-то мере.

332
задан Thaddeus Albers 11 September 2013 в 01:02
поделиться