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

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

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

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

19.03.2008, 11:09. Просмотров 899. Ответов 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++
Как из intova() возвратить указатель чтобы напечатать матрицу в main?? int main() { int n, m; while(!(n>=1 && n<=5 && m>=1 &&...

Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать? - C++
Подскажите, что значит константный указатель на объект, указатель на константный объект, и как это можно использовать??

Как функции возвратить ссылку на объект? - C++
//Есть некая функция что писать перед функцией??? Инт написал. int func(){ // Создаем какой-то обьект Obj object_1; //что-то с ней...

Как правильно вернуть объект созданный в функции? - C++
Допустим у нас есть функция, которая динамически создает объект и должна его вернуть. К примеру, возьмем динамическое создание массива. ...

интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект - C++
Привет всем. Необходимо реализовать интерфейс, в методе которого создается объект типа IDictionary и возвращается ссылка на этот объект. Не...

Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект - 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;
   }
0
Andir
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 145
11.04.2008, 07:40 #5
Привет All!
2 simplepilot:
Вы нам тут сказанули :
>Ты можешь передавать и ссылку на вновь созданный объект как
например
> ... (skipped)

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

Без тени смущения, Andir!
0
simplepilot
1 / 1 / 0
Регистрация: 22.07.2007
Сообщений: 366
13.04.2008, 11:31 #6
Меня приакалывают товарищи вроде Andir которые не могут разобраться в не очень сложных вещах, а начинают доколюбыватся к словам.
Специально для Andir поясню коротко идею того что происходит.
Да естественно ссылка на объект не передаётся, это лишь выглядит так, на практике создаётся новый объект на стороне , которая вызывает функцию потом этот объект копируется через оператор равно. Это и есть то часть того для чего придумывалось ООП и все эти конструкторы создающие копию объекта по ссылке. Открой книжку любую по ООП и там обязательно будет такой пример
0
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 поясню коротко идею того что происходит...
Вот уж спасибо, никогда не думал, что мне ЭТО ТАК можно пояснить... Жаль только разработчиков ООП...

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

З.Ы. Кстати рассказики на твоём сайте классные !!! ...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2008, 07:55
Привет! Вот еще темы с ответами:

Созданный объект Array<char> удаляется, как только метод convert завершается - C++
Есть простенькая оболочка над массивом Array&lt;T&gt;: template&lt;typename T&gt; class Array { private: T* data; public: const...

Как передавать объект класса в методе main, чтобы конструктор не вызывался 2 раза? - C++
Проблемы заключаются в следующем: есть класс для создания записи и класс для хранения массива этих записей. Так вот, как передавать объект...

Как удалить объект через указатель? - C++
Делаю консольный тетрис. Задаю указатель на объект класса Block. В if создаю объект класса, а потом этот объект нужно удалить. как удалить...

Основы: указатель на объект или объект, что выбрать? - C++
Не до конца понимаю (или вообще не понимаю) когда лучше использовать указатель на объект, а когда объект. Например: // есть класс ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.04.2008, 07:55
Ответ Создать тему
Опции темы

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