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

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

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

Неверный возврат из функции - C++

08.12.2013, 21:42. Просмотров 177. Ответов 2
Метки нет (Все метки)

Краткий экскурс. Есть универсальный класс Matrix<TYPE>, описание его выглядит вот так:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*Matrix.h*/
#ifndef _MATRIX_CLASS
#define _MATRIX_CLASS
#include <iostream>
 
template <class TYPE>
class Matrix
{
protected:
    unsigned m_nRows, m_nColumns;
    TYPE** m_Matrix;
 
    unsigned FirstNNinColumn (unsigned, unsigned);
 
public:
    Matrix(unsigned, unsigned);
    ~Matrix(void);
 
    void SpecialSteppedForm(void);
 
    void ExchangeRows(unsigned, unsigned);
    void SumRows(TYPE, unsigned, unsigned);
    void MultipleRow(TYPE, unsigned);
    void SetElement(TYPE, unsigned, unsigned);
    TYPE GetElement(unsigned, unsigned);
 
    Matrix operator+ (Matrix&);
    Matrix operator- (Matrix&);
    Matrix operator* (Matrix&);
    Matrix operator= (Matrix&);
 
    template<class TYPE>
    friend std::ostream& operator<<(std::ostream&, Matrix<TYPE>&);
    template<class TYPE>
    friend std::istream& operator>>(std::istream&, Matrix<TYPE>&);
};
 
#include "Matrix.cpp"
#endif /*ifndef _MATRIX_CLASS*/


проблема возникает с функцией умножения матриц. Она реализована операторной функцией членом в "matrix.cpp" вот так:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template<class TYPE>
Matrix<TYPE> Matrix<TYPE>::operator* (Matrix<TYPE>& Factor)
{
    if (m_nColumns != Factor.m_nRows)
        throw IncorrectMultiplicationException();
    Matrix<TYPE> Result(m_nRows, Factor.m_nColumns);
    for (unsigned i = 0, j = 0; ; j++)
    {
        if (j == Result.m_nColumns)
        {
            if (++i == Result.m_nRows)
                break;
            j = 0;
        }
        TYPE Temp(0);
        for (unsigned k = 0; k < m_nColumns; k++)
            Temp += m_Matrix[i][k]*Factor.m_Matrix[k][j];
        Result.m_Matrix[i][j] = Temp;
    }
    return Result;
}


В чем проблема, собственно... Возвращается объект класса... Верно возвращаются поля unsigned m_nRows, m_nColumns, а поле TYPE** m_Matrix теряется при использовании в качестве параметра шаблона собственный класс.
Как этот код можно исправить, потому что идей даже примерно нет. Во время построчного дебага видно, что считается произведение верно, а вот возвращается совсем нет. Теряется сам указатель m_Matrixю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 21:42     Неверный возврат из функции
Посмотрите здесь:

Неверный выход значения из функции - C++
Всем доброго времени суток! Есть вот какая проблемка... Есть функция перевода из символичного массива в целочисленный массив. Для удобства...

Возврат значения функции - C++
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в...

Возврат массива из функции - C++
Здравствуйте, Не пойму почему не работает данный код. Пишет cannot convert 'std::string*' to 'int*' in return По теории я жду...

Возврат массива из функции - C++
В объекте есть массив int state;, который мне нужно из него вытащить. Вижуал показывал ошибку, когда я пытался вернуть указатель state в...

Возврат массива из функции - C++
Программа должна переводить числа с 10 системы в двоичную... но почемуто выводит некорректно... Вот код... #include &lt;iostream&gt; using...

Возврат ссылки из функции - C++
Изучаю С++, знаю С. Вот такой простенький вопросик есть. В чем вообще разница: class Str { public: Str func() {return...

Возврат вектора из функции - C++
Как вывести вектор из функции через адреса или указатели? Можно и внутри вектор создать, его главное вывести. #include &lt;vector&gt; //И...

Возврат объекта из функции - C++
Здравствуйте. Написал в Code.Blocks на C++ вот такой код (привожу только часть кода, остальное на мой взгляд излишне). class Soldier...

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

Возврат итератора из функции - C++
в чем заключается проблема с возвратом итератора и как ее исправить? заранее спасибо за ответ =) (ожидаемый от программы ответ &quot;Yes&quot;,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.12.2013, 21:45     Неверный возврат из функции #2
Конструктор копирования нужен.
knjazshugai
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 5
08.12.2013, 22:08  [ТС]     Неверный возврат из функции #3
Спасибо большое)
Yandex
Объявления
08.12.2013, 22:08     Неверный возврат из функции
Ответ Создать тему
Опции темы

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