tstr* tstr::select(int k)
{
tstr* tmp_str = begin;
while(NULL != tmp_str)
{
if(k == tmp_str->number)
{
.....
return tmp_str;
}
tmp_str = tmp_str->next;
getch();
}
return tmp_str;
}
Как вернуть указатель на объект?
tstr* tstr::select (tstr* str, int k) //ne gotovo
{
str=begin;
while (str!=NULL)
{
if (str->number==k) {
gotoxy (1,20);cout << " ";
gotoxy (1,20);cout << "!str->number="<<str->number<<" !k="<<k <<"sting="<<str->s;
gotoxy (40,19); cout << "str=" << str;
return str;
}
str=str->next;getch();
}
return str;
}
заметьте у нас есть cout'ы в которые все прекрасно выводится, вся нужна инфа!
------------------------
однако если в main()
мы вызываем select:
str->select (str,1) //ищем первый элемент
и надемся что теперь str указывает на нужный элемент то мы окажемся разочарованны, т.к
при str->имя любого метода
мы получим нулевой результат
так как если значие str после возвращения =0x000
???
это глюк??? или я что-то неправильно делаю?
Цитата:
Originally posted by generalm
Предположим что у нас есть метод select в каком-то классе
tstr* tstr::select (tstr* str, int k) //ne gotovo
{
str=begin;
while (str!=NULL)
{
if (str->number==k) {
gotoxy (1,20);cout << " ";
gotoxy (1,20);cout << "!str->number="<<str->number<<" !k="<<k <<"sting="<<str->s;
gotoxy (40,19); cout << "str=" << str;
return str;
}
str=str->next;getch();
}
return str;
}
заметьте у нас есть cout'ы в которые все прекрасно выводится, вся нужна инфа!
------------------------
однако если в main()
мы вызываем select:
str->select (str,1) //ищем первый элемент
и надемся что теперь str указывает на нужный элемент то мы окажемся разочарованны, т.к
при str->имя любого метода
мы получим нулевой результат
так как если значие str после возвращения =0x000
???
это глюк??? или я что-то неправильно делаю?
Предположим что у нас есть метод select в каком-то классе
tstr* tstr::select (tstr* str, int k) //ne gotovo
{
str=begin;
while (str!=NULL)
{
if (str->number==k) {
gotoxy (1,20);cout << " ";
gotoxy (1,20);cout << "!str->number="<<str->number<<" !k="<<k <<"sting="<<str->s;
gotoxy (40,19); cout << "str=" << str;
return str;
}
str=str->next;getch();
}
return str;
}
заметьте у нас есть cout'ы в которые все прекрасно выводится, вся нужна инфа!
------------------------
однако если в main()
мы вызываем select:
str->select (str,1) //ищем первый элемент
и надемся что теперь str указывает на нужный элемент то мы окажемся разочарованны, т.к
при str->имя любого метода
мы получим нулевой результат
так как если значие str после возвращения =0x000
???
это глюк??? или я что-то неправильно делаю?
Послушай и не обижайся.
Ты так много уже задал элементарных вопросов про указатели, может проще будет взять книгу по С++ и прочитать в т.ч. и про указатели?
Совершенно необосновано надеяться, что str как-либо изменится, т.к. str, который в main и str, который в tstr::select - это разные str. :)
С какой целью ты передаешь str в tstr::select?
Чтоб изменить его значение? Но дело в том, что передается лишь значение, которое ты заменяешь внутри на begin. Т.о. твоя запись тождественна такой:
Код:
а для того чтоб изменилось значение str (того, что в main) надо хотя бы воспользоваться оператором присваивания:
str = str->select(1);
Если же тебе ну очень надо, чтоб значение str изменялось внутри select, передавай ссылку или указатель на str:
tstr* tstr::select(tstr** pstr, int k);
tstr* tstr::select(tstr* &str, int k);