| |
|
|
| | имеется два класса
class class_A {
var $a1;
var $a2;
var $a3;
...
}
class class_B {
var $b1;
var $b2;
var $b3;
var $ba;
function class_B($a) {
$this->ba = & $a;
}
...
}
|
соответственно по ним объявляются переменные
$a = new class_A();
$b = new class_B($a);
|
необходимо присвоить переменной $b->ba из класса class_B указатель на переменную $a класса class_A.
Однако присвоения указателя не происходит. Так как при дальнейшей изменении $a эти изменения не отображаются в переменной b]$b->ba[/b].
Попробовал присваивать указатель после отработки конструктора класса class_B.
$a = new class_A();
$b = new class_B();
$b->ba = &$a;
|
все прекрасно работает. Подскажите почему так происходит. | |
| |
|
|
| |
|
|
| |
для: sviatoslav
(26.08.2007 в 13:22)
| | |
function class_B($a) {
$this->ba = & $a;
}
|
после выхода из функции локальная переменная уничтожается ($a) | |
| |
|
|
| |
|
|
| |
для: bronenos
(26.08.2007 в 14:22)
| | | А как тогда можно передать указатель? | |
| |
|
|
| |
|
|
| |
для: sviatoslav
(26.08.2007 в 14:38)
| | | global $a; | |
| |
|
|
| |
|
|
| |
для: bronenos
(26.08.2007 в 14:57)
| | | >global $a;
Этот вариант не очень подходит. Хотелось бы в функцию передать адрес на переменную как это можно делать на C++. | |
| |
|
|
| |
|
|
| |
для: bronenos
(26.08.2007 в 14:22)
| | | Да но $a созданная от класса живет. И я пытаюсь сохранить указатель на нее. | |
| |
|
|
| |
|
|
| |
для: sviatoslav
(26.08.2007 в 15:09)
| | | может попробовать тогда передавать &$a, а внутри коонструктора ставить = $a | |
| |
|
|