Назначение указателя во внешней функции - PullRequest
0 голосов
/ 11 марта 2012

Моя проблема заключается в следующем: в основном у меня где-то

Shape* ext = NULL;
FieldProbPhys2D* Fprob = NULL;
(...)
createCircleExt(ext, Fprob);

и я хочу назначить указатель формы вне основного (я признаю, что это просто вопрос отсутствия перегруженного текста). У меня есть Utility.h и соответствующий ему Utility.cpp (где определено createCircleExt):

void createCircleExt(Shape* f, FieldProbPhys2D* field) {
(...)
f = new Circle(r, r, r);
(...)
field = new FieldProbPhys2D(Nx, Ny, 2*r, 2*r, Vg);

}

когда я запускаю это, я получаю ошибку сегментации, и valgrind говорит мне: доступ не в сопоставленной области по адресу 0x0

Значит ли это, что назначение только локальное? Если это так, как я могу это исправить?

Большое спасибо!

Simon

1 Ответ

0 голосов
/ 13 марта 2012

f и поле являются указателем.Они скопированы в рамку createCircleExt().Там локальные копии будут перезаписаны.Если вы оставите createCircleExt(), старые значения по-прежнему будут действительны.

Возможно, вы хотите использовать указатели на указатели или ссылки.

...