Показать сообщение отдельно

  #5  
Старый 27.07.2009, 15:03
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами: 10386906

Репутация: 599


По умолчанию

Цитата:
из мэйна я передаю указатель в метод, который принимает этот указатель и ему присваивается новый адрес оператором new. Далее изменяется значение data указателя. Дальше возврат в мэйн и вывод измененного значения на экран. Но значение остается прежним.
если ты хочешь изменить значение указателя, переданного параметром, то нада использовать ссылку на указатель. вообще такого кода лучше избегать в твоем примере, ибо это излишне усложнит код. примерно будет так.

Код:
#include <iostream>
using namespace std;

class node
{
public:
	node() { cout << "constructor...\n"; }
	~node() { cout << "destructor...\n"; }
	static void func(node* &Mynode);	
	node(node&) { cout << "copy-constructor...\n"; }
	int data;	
};
void main()
{
	node* Mynode = new node;
	Mynode->data = 5;

	node::func(Mynode);
	cout << Mynode->data << endl;
}
void node::func(node* &Mynode)
{
	delete Mynode;
	Mynode = new node;
	Mynode->data = 7;
}
метод func статический ибо иначе в твоем примере получится стремная конструкция delete this;
вообще простой совет - такие конструкции не используй никада, если уж совсем не припрет.
 
Ответить с цитированием