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

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

Войти
Регистрация
Восстановить пароль
 
Ingener74
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 18
#1

возврат копии обьекта класса из метода - C++

06.04.2012, 22:16. Просмотров 468. Ответов 7
Метки нет (Все метки)

Привет всем. Есть класс ниже в нём operator+. Помогите компилятор выдаёт ворнинг

warning C4172: returning address of local variable or temporary

всё работает но этот ворнинг бесит как избавиться подскажите пожалуйста


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template <typename tPointType>
struct S_Point
{
    tPointType m_oX, m_oY;
 
    S_Point( tPointType A_oX = 0, tPointType A_oY = 0 ): m_oX(A_oX), m_oY(A_oY){}
 
        .....
 
    S_Point& operator +( const S_Point& A_rPoint )
    {
        return S_Point( m_oX + A_rPoint.m_oX, m_oY + A_rPoint.m_oY );
    }
};
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 22:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос возврат копии обьекта класса из метода (C++):

Возврат копии структуры из другого класса - C++
Как можно копию структуры из одного класса передать в другой? (именно чтоб она изначально в private была) Сам только до такой вариант...

Возврат копии значения из функции - C++
Сегодня нашел информацию о том, что можно сохранять ссылку на временный объект, например #include &lt;iostream&gt; int foo() { int...

Передача метода класса в качестве параметра для метода другого класса - C++
Здравствуйте, Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог прервать любую функцию, при этом абсолютна...

Вызов метода класса из метода другого класса - C++
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...

Возврат двух значений из метода - C++
Доброго времени суток, господа. Столкнулся с проблемой: нужно возвратить два значения с одного метода. Я нуб, не кидайтесь тапками. В...

Возврат значения метода через указатель - C++
Здраствуйте, помогите зделать что бы возврат результатов с метода решения уравнения возвращался через указатель. #include &lt;iostream&gt; ...

7
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.04.2012, 22:21 #2
А почему у вас оператор + возвращает ссылку? Это чтобы по-приколу можно было так сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
struct Foo
{
    Foo& operator +(const Foo&)
    {
        Foo f;
        return f;
    }
};
 
int main()
{
    Foo f1, f2, f3;
    (f1 + f2) = f3;
    return 0;
}
0
Kuzia domovenok
2042 / 1887 / 172
Регистрация: 25.03.2012
Сообщений: 6,499
Записей в блоге: 1
06.04.2012, 22:26 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <typename tPointType>
struct S_Point
{
    tPointType m_oX, m_oY;
 
    S_Point( tPointType A_oX = 0, tPointType A_oY = 0 ): m_oX(A_oX), m_oY(A_oY){}
 
        .....
 
    const S_Point operator +( const S_Point& A_rPoint )const 
    {   
         S_Point result=*this;
         result.m_oX+=A_rPoint.m_oX
         result.m_oY+=A_rPoint.m_oY 
         return result;
    }
};
можно ещё наверное?
C++
1
friend const S_Point operator +( const S_Point& A_rPoint,   const S_Point& B_lPoint )
??
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
06.04.2012, 22:27 #4
soon, так можно сделать и без ссылки
Ingener74,
C++
1
const S_Point operator +( const S_Point& A_rPoint ) const;
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.04.2012, 22:30 #5
Цитата Сообщение от Toshkarik Посмотреть сообщение
soon, так можно сделать и без ссылки
Нужно. Возвращать ссылку на локальный объект - самоубийство.
0
Toshkarik
1147 / 864 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
06.04.2012, 22:33 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
soon, нет, вы не правильно поняли. В своем сообщение, как мне показалось, вы сделали акцент на записи
C++
1
( A + B ) = C;
Так можно сделать и без ссылки, передавая не константный объект А так конечно же нельзя возвращать ссылку на локальные объекты.
0
soon
06.04.2012, 22:44
  #7

Не по теме:

Почему же я был уверен, что так сделать не получится? Посыпаю голову пеплом...

0
Ingener74
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 18
06.04.2012, 22:45  [ТС] #8
Спасибо всем с вашей помощью разобрался!!!!
0
06.04.2012, 22:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2012, 22:45
Привет! Вот еще темы с ответами:

Вернуть С-строку из обьекта класса - C++
Есть класс, у него метод c_str. Какой лучший способ вернуть С-строку? 1)void c_str(char* str) { // сформировать строку и записать в str...

Инициализация обьекта класса списком C++ - C++
Здравствуйте, кому не сложно расскажите в кратце как мне сделать вот такую штуку: у меня есть некий класс реализующий бинарное дерево ...

Инициализация обьекта внутри другого класса - C++
Всем привет. Вообщем проблема такая. Есть несколько классов class WeaponType { }; class Swords : public WeaponType { }; ...

Запись в файл данных из обьекта класса - C++
подскажите пожалуйста,как записать данные из обьекта g4 в файл,что-то пытаюсь,но никак не могу понять. строка 181 //#include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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