Принятый ответ не верен. В функции
void foo( myObject* bar1, myObject* bar2 )
{
bar1 = new myObject();
bar2 = new myObject();
// do something
}
вновь выделенный объект присваивается локальным переменным. Они не влияют на значения указателей в вызывающей функции.
int main( int argc, char* argv[] )
{
myObject* thing1;
myObject* thing2;
foo( thing1, thing2 ); // thing1 and thing2 don't get assigned
// They continue to be uninitialized in
// this function
// Don't forget to release the memory!
delete thing1; // These two deletes will lead to undefined behavior.
delete thing2;
return 0;
}
Что вам нужно:
void foo( myObject*& bar1, myObject*& bar2 )
{
bar1 = new myObject(); // Now the value of the pointers in the calling
bar2 = new myObject(); // will be changed since the pointers are passed by reference.
// do something
}