Я столкнулся с неожиданным поведением при использовании std :: vector :: push_back в C ++. У меня есть следующий псевдокод, который, я надеюсь, достаточно ясен, чтобы продемонстрировать проблему, с которой я сталкиваюсь:
MyClass* myClass = new MyClass();
std::vector<MyObject*> newObjects;
myClass->VectorOperation(oldObject, newObjects);
MyClass::VectorOperation(MyObject* oldObject, std::vector<MyObject*> newObjects)
должен работать следующим образом:
void MyClass::VectorOperation(MyObject* oldObject, std::vector<MyObject*> newObjects)
{
if (// Some condition on oldObject)
{
newObjects->push_back(oldObject);
}
else
{
// Operations that can result in translating a single oldObject into many MyObjects, e.g.
MyObject* newObject1 = new MyObject();
MyObject* newObject2 = new MyObject();
newObjects->push_back(newObject1);
newObjects->push_back(newObject2);
}
}
Проблема Я вижу, что после успешного выполнения оператора if
в VectorOperation
вектор newObjects
пуст, то есть вектор newObjects
должен иметь одну запись, соответствующую oldObject
. Я относительно новичок в C ++, но я не уверен, что мне здесь не хватает. Любая помощь очень ценится.
Спасибо!
РЕДАКТИРОВАТЬ: Я неправильно набрал подпись метода. Должно быть:
void MyClass::VectorOperation(MyObject* oldObject, std::vector<MyObject*>* newObjects)