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

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

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

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

08.12.2013, 21:42. Просмотров 182. Ответов 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++):

Возврат 2 значений из функции с одним вызовом этой же функции - C++
Вообщем где то в какой то игре была хукнута одна функция int function(int arg1,int arg2,int arg3); суть в чем int...

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

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

Возврат boost::any из функции - C++
virtual bool write_value(const string_type&amp; name_value, const boost::any&amp; value) { try { pt.put(name_value, value); // load...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 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
Спасибо большое)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 22:08
Привет! Вот еще темы с ответами:

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

Возврат строки из функции - C++
//char perfomers; //char _perfomers; char GetPerfomers(){strcpy(_perfomers,perfomers);return *_perfomers;} Есть у меня такая...

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

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


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

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

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