Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sash@
Сообщений: n/a
#1

Как возвратить указатель на объект, созданный в методе? - C++

19.03.2008, 11:09. Просмотров 873. Ответов 6
Метки нет (Все метки)

Код
A* B::ReturnPtrA(){
   A a;
   a.Method1(a.Method2());
   //... 
   return &a;
}
Говорит, что нельзя возвращать указатель на автоматическую переменную.
А как возвратить указатель на объект, созданный в методе?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2008, 11:09     Как возвратить указатель на объект, созданный в методе?
Посмотрите здесь:
Как возвратить указатель C++
Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать? C++
C++ Как функции возвратить ссылку на объект?
Как правильно вернуть объект созданный в функции? C++
интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект C++
Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект C++
Созданный объект Array<char> удаляется, как только метод convert завершается C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AnTr
Сообщений: n/a
19.03.2008, 11:51     Как возвратить указатель на объект, созданный в методе? #2
A* B::ReturnPtrA()
{
A* a=new A;
a->Method1(a->Method2());
//...
return a;
}
AnTr
Сообщений: n/a
19.03.2008, 11:55     Как возвратить указатель на объект, созданный в методе? #3
чутъ не зaбыл!
Oб уничтoжении oбъектa ты дoлжен пoзaбoтится сaм.
simplepilot
1 / 1 / 0
Регистрация: 22.07.2007
Сообщений: 366
10.04.2008, 18:52     Как возвратить указатель на объект, созданный в методе? #4
Ты можешь передавать и ссылку на вновь созданный объект как
например
Код
   string a='OK';
   return a;
но только в случае если в классе string
class string
{
private:
char* buffer;
public:
string(const char* str)
{
buffer = new char[strlen(str)+1];
strcpy(buffer,str);
}
}
public:
определён дополнительный конструктор
Код
   string(string& str)
   {
      buffer = new char[strlen(str.buffer)+1];
      strcpy(buffer,str.buffer);
   }
и также переопределён оператор равно(=)
Код
 string & operator=(const string& str)
   {
      if (&str==this) return *this;
      delete[] buffer;
      buffer = new char[strlen(str.buffer)+1];
      strcpy(buffer,str.buffer);
      return *this;
   }
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
11.04.2008, 07:40     Как возвратить указатель на объект, созданный в методе? #5
Привет All!
2 simplepilot:
Вы нам тут сказанули :
>Ты можешь передавать и ссылку на вновь созданный объект как
например
> ... (skipped)

Мои аплодисменты. А теперь про класс int и char ;-)

Без тени смущения, Andir!
simplepilot
1 / 1 / 0
Регистрация: 22.07.2007
Сообщений: 366
13.04.2008, 11:31     Как возвратить указатель на объект, созданный в методе? #6
Меня приакалывают товарищи вроде Andir которые не могут разобраться в не очень сложных вещах, а начинают доколюбыватся к словам.
Специально для Andir поясню коротко идею того что происходит.
Да естественно ссылка на объект не передаётся, это лишь выглядит так, на практике создаётся новый объект на стороне , которая вызывает функцию потом этот объект копируется через оператор равно. Это и есть то часть того для чего придумывалось ООП и все эти конструкторы создающие копию объекта по ссылке. Открой книжку любую по ООП и там обязательно будет такой пример
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2008, 07:55     Как возвратить указатель на объект, созданный в методе?
Еще ссылки по теме:
Как передавать объект класса в методе main, чтобы конструктор не вызывался 2 раза? C++
C++ Основы: указатель на объект или объект, что выбрать?
Что можно возвратить из функции если нужный объект не создан C++
C++ Как достать указатель на объект из контейнера set
C++ Как получить указатель на объект класса CDocument

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
14.04.2008, 07:55     Как возвратить указатель на объект, созданный в методе? #7
2 simplepilot

>Меня приакалывают товарищи вроде Andir которые не могут разобраться в не очень сложных вещах, ...

А меня не прикалывают такие товарищи, как simplepilot, которые на обычный вопрос отвечают кучей умных слов, которых по-видимому и сами не понимают ...
Если бы кто-нить спросил меня как вывести на экран в языке С++ строчку 'Hello World !', а я при этом начал бы ему рассказывать про STL, ATL, MFC, и приводил бы при этом кучу кода ... Ну мягко говоря меня бы не поняли ...
Теперь по теме, я поапплодировал твоей находчивости, а не тому что ты написал ... эти строчки, ИМЕННО, можно найти в любой книжке, но толку от них никакого ... вопрос не был про класс string и переопределние операторов ... поэтому я и пожелал ещё услышать про int и char ...

>...Специально для Andir поясню коротко идею того что происходит...
Вот уж спасибо, никогда не думал, что мне ЭТО ТАК можно пояснить... Жаль только разработчиков ООП...

Парень я понимаю, что тебе негде пофлэймить по-нормальному и поэтому предлагаю перебраться ко мне в аську и поговорить ...

З.Ы. Кстати рассказики на твоём сайте классные !!! ...
Yandex
Объявления
14.04.2008, 07:55     Как возвратить указатель на объект, созданный в методе?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru