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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Сбросить значений всех элементов на форме http://www.cyberforum.ru/cpp-beginners/thread1033736.html
Подскажите как сбросить значений всех элементов на форме. Нужно чтобы форма была как после первого открытия.
C++ Написать программу, которая упорядочивает существующие множества и определяет объединение двух множеств Помогите пожалуйста с задачей. Очень нужно!!! Нужно написать программу которая упорядочивает существующие множества и определяет объединение двух множеств, порядка n и (n+5). http://www.cyberforum.ru/cpp-beginners/thread1033731.html
C++ Практикум
Добрый вечер , прошу у вас помощи с 3 заданием.
C++ Вычисление суммы ряда в C++
Помогите пожалуйста балбеске написать программу вычисления суммы ряда \sum_{n=1}^{10} n / (4n^2-1)
C++ шаблонные функции. Ошибка http://www.cyberforum.ru/cpp-beginners/thread1033694.html
Не признаёт среднее значение и нулевой элемент. #include "stdafx.h" #include <iomanip> #include <iostream> #include <time.h> using namespace std; template <typename T> // максимальное и минимальное значение элементов матрицы: T max(T **mint, int x, int y)
C++ Вывести значения std::vector<std::vector<int*> > Подскажите, как вывести значения? const size_t row = 3; const size_t col = 3; std::vector<std::vector<int*> > imatrix; // Заполнение for(size_t i = 0; i < row; ++i) { подробнее

Показать сообщение отдельно
knjazshugai
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 5
08.12.2013, 21:42     Неверный возврат из функции
Краткий экскурс. Есть универсальный класс 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ю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru