Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Std:: __throw_bad_alloc() + dll https://www.cyberforum.ru/ cpp-beginners/ thread1438503.html
Здравствуйте, господа форумчане. Проблема в следующем: есть собственного изготовления automate.dll, в которой следующий код: struct Coordinate_t{ float x; float y; float z;
Программа Орфография на C++ C++
Привет всем помогите пожалуйста для создание программу Орфографии на языке C++ <strong>(только C++)</strong> Вот : Разработать программу «Орфография», которая проверяла бы правильность написания...
C++ Как считать данные с файла и записать в массив? В файле данные расположены следующим образом : Radius: 1 Coord point: (5;10) Radius: 5 Coord point: (1;7) Radius: 6 Coord point: (5;8) Radius: 7 Coord point: (0;7) https://www.cyberforum.ru/ cpp-beginners/ thread1438486.html C++ Результат после вывода из файла https://www.cyberforum.ru/ cpp-beginners/ thread1438481.html
Здравствуйте. Есть 3 файла, в каждой 5 строчке находится число, которое надо записать в массив 'arr' и вывести его, вместо цифр получаю иероглифы. В чем моя ошибка? string tmpstring; int...
C++ Найти индекс первого максимального элемента массива
Найти индекс первого максимального элемента массива, Найти максимальный из элементов массива в заданном интервале и Найти количество элементов между первым и последним максимальным элементами массива...
C++ Организовать ввод в однонаправленный список, узел списка состоит из двух полей: целое число и указатель https://www.cyberforum.ru/ cpp-beginners/ thread1438465.html
Здравствуйте, нужна ваша помощь!!! Нужно написать программу Организовать ввод в однонаправленный список. Узел списка состоит из двух полей: целое число и указатель. Необходимо удалить из списка...
C++ Быстрое изменение частоты дискретизации имеющегося звука онлайн Добрый день. У меня задача быстрого изменения частоты дискретизации имеющегося звука он-лайн по определенному коэффициенту, которые постоянно и и быстро меняется. Эту операцию проделываю... https://www.cyberforum.ru/ cpp-beginners/ thread1438462.html C++ Найти частоту появления символов в исходном текстовом файле
Здравствуйте, возникли такие проблемы. Пишу на Visual C++ 2010. На первом этапе вывода текста из файла не получается его забить (сохранить) в какую-либо переменную (максимум, f.get(a)). Т.е. пока...
C++ Задача на умножение элементов матрицы https://www.cyberforum.ru/ cpp-beginners/ thread1438447.html
Помогите решить данную задачу: Разработать алгоритм и написать программу на языке C++. Задана матрица (двумерный массив) A размером N x М , состоящая из действительных элементов. Числа M и N...
C++ Создать стек с числами, лежащими в заданном диапазоне Задали в универе, не знаю, что с ним делать.. Создать стек с числами в диапазоне от –50 до +50. Создать новый стек, в который поместить элементы, лежащие во вто- рой половите первого стека. https://www.cyberforum.ru/ cpp-beginners/ thread1438432.html
C++ Из текста выбрать числа и записать в массив N. Количество чисел не более 10
Из текста выбрать числа и записать в массив N. Количество чисел не более 10. Помогите с кодом не могу сообразить как записать
C++ Исправить программу, чтобы она прибавляла ко всем элементам одномерного массива первый https://www.cyberforum.ru/ cpp-beginners/ thread1438413.html
Подскажите как сделать чтобы эта программа ко всем элементам прибавляла не 1 , а первый элемента одномерного массива (строки) #include <iostream> #include <string> #include <vector> #include...
2 / 2 / 2
Регистрация: 12.04.2014
Сообщений: 102
0

Отделение интерфейса от реализации - C++ - Ответ 7573352

05.05.2015, 18:54. Показов 1920. Ответов 4
Метки (Все метки)

Сделала рабочую программу. Нужно разделить интерфейс от реализации. Делаю как написано:
добавить в проект заголовочный файл *.h;
определить интерфейс класса в заголовочном файле
добавить в проект исполняемый файл *.cpp;
в исполняемом файле выполнить реализацию класса;
подключить заголовочный файл к программе.

При компилировании появляются ошибки:

Ошибка 2 error C2084: функция "Matrix::Matrix(int)" уже имеет текст реализации

Ошибка 5 error C2264: Matrix::Matrix: ошибка в определении или объявлении функции; функция не вызвана

Программу разделила на 3 части, как мне кажется, все как объясняли. В чем ошибка?
Описала это в Заголовочный файл matrix.h класса Matrix.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iomanip>
 
class Matrix
{
    private:
        float **ptr;
        int size;
    
    public:
        Matrix() {}; // конструктор по умолчанию
        Matrix( int n) : size(n) {}; // конструктор с параметрами
        Matrix(const Matrix &ob); // конструктор копии
        ~Matrix(); // деструктор 
        Matrix operator= (const Matrix& ob) ;
        Matrix  operator* (const Matrix& ); 
        Matrix  operator* (const float); 
        Matrix  operator/ (const float); 
        friend std::ostream &operator<< (std::ostream &, const Matrix &);
        friend std::istream &operator>> (std::istream &, Matrix &); 
  };

Исполняемый файл matrix.cpp класса Matrix.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
#include <Windows.h>
#include <iomanip>
#include "matrix.h"
 
 
     Matrix::Matrix() {} // конструктор по умолчанию
        Matrix::Matrix( int n) : size(n) // конструктор с параметрами
        {
            ptr = new float*[size];
            for ( int i = 0; i < size; i++ )
            {
                ptr[i] = new float[size];
            }
             for ( int i = 0; i < size; i++ )
                for ( int j = 0; j < size; j++ )
                {
                   ptr[i][j]=0.0;
                }
        }
    Matrix::Matrix(const Matrix &ob) // конструктор копии
        { 
        size = ob.size; 
        ptr = new float*[size]; 
           for ( int i = 0; i < size; ++i) 
           ptr[i] = new float[size]; 
        for ( int i = 0; i < size; ++i) 
            for ( int j = 0; j < size; ++j) 
               ptr[i][j] = ob.ptr[i][j];
        }  
 
         Matrix::~Matrix() // деструктор 
        {
            for ( int i = 0; i < size; i++ )
            {
                delete []ptr[i];
            }
            delete []ptr;
        } 
 
 
 
Matrix Matrix::operator * (const Matrix& ob) // умножение матриц друг на друга
     {  
      Matrix temp; 
      temp.size =size; 
      std::cout<< "Результаты после умножения матриц. ";
      temp.ptr = new float*[temp.size]; 
          for ( int i = 0; i < temp.size; ++i) 
             temp.ptr[i] = new float[temp.size];
                 for ( int i = 0; i < temp.size; i++) 
                    for ( int j = 0; j < temp.size; j++) 
                        { 
                          temp.ptr[i][j] = 0.0;
                          for (int k = 0; k < temp.size; ++k) 
                          temp.ptr[i][j] = temp.ptr[i][j] + (ptr[i][k] * ob.ptr[k][j]); 
                        }
                          return temp; 
       }
 
 Matrix Matrix::operator * (const float m) // умножение матрицы на число
      {     
       Matrix temp; 
       temp.size =size; 
       std::cout << "Результаты после умножения матрицы на число. ";
       temp.ptr = new float*[temp.size]; 
           for ( int i = 0; i < temp.size; ++i) 
              temp.ptr[i] = new float[temp.size];
                 for ( int i = 0; i < temp.size; i++) 
                    for ( int j = 0; j < temp.size; j++) 
                       { 
                        //temp.ptr[i][j] = 0.0;
                        temp.ptr[i][j] = ptr[i][j] * m; 
                        }
return temp; 
}
 
 Matrix Matrix::operator / (const float m) // деление матрицы на число
      {     
      Matrix temp; 
      temp.size =size; 
      std::cout << "Результаты после деления матрицы на число. ";
        temp.ptr = new float*[temp.size]; 
            for ( int i = 0; i < temp.size; ++i) 
               temp.ptr[i] = new float[temp.size];
                  for ( int i = 0; i < temp.size; i++) 
                      for ( int j = 0; j < temp.size; j++) 
                          { 
                          // temp.ptr[i][j] = 0.0;
                           temp.ptr[i][j] = ptr[i][j] / m; 
                          }
                           return temp; 
                          }
 
   Matrix Matrix::operator=(const Matrix& ob) // оператор присваивания
      { 
        for (int i= 0; i < size; ++i) 
            for (int j = 0; j < size; ++j) 
                ptr[i][j] = ob.ptr[i][j]; 
        return *this;
      } 
 
   std::istream &operator>> (std::istream & input, Matrix &obj) // перегруженный оператор ввода
{   std::cout << "Вводим значения в наш массив 2*2:"<<std::endl;
    for (int i = 0; i < obj.size; i++)
        for (int j = 0; j < obj.size; j++)
            std::cin >> obj.ptr[i][j]; 
 
    return std::cin;
}
 
std::ostream &operator<< (std::ostream &output, const Matrix &obj) // перегруженный оператор вывода
{  std::cout<<"Значения в матрице:"<<std::endl;
    for (int i = 0; i < obj.size; i++)
    {std::cout << std::endl;
        for (int j = 0; j < obj.size; j++)
        {
            std::cout << std::setw(5) << std::setprecision(3) << obj.ptr[i][j];
        }
    }
    std::cout << std::endl; 
    return std::cout; 
}

Оставила в исходном коде.cpp
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
#include "matrix.h"
#include <iostream>
#include <Windows.h>
#include <iomanip>
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    float m;
    Matrix m1(2); 
    std::cin >> m1;// перегруженная операция ввода
    Matrix m2(2);
    std::cout << "Введите цифру,на которую умножим матрицу:"<<std::endl;
    std::cin >> m;
    m2 = m1 * m;// перегруженная операция *
    std::cout << m2; // перегруженная операция вывода
    m2 = m2 / m;// перегруженная операция /
    std::cout << m2;
    std::cout << "Умножение матриц друг на друга:"<<std::endl;
    Matrix m3(2);
    std::cin >> m3;
    Matrix m4(2);
    std::cin >> m4;
    Matrix m5(2);
    m5 = m3 * m4;// [url]http://www.mathprofi.ru/deistviya_s_matricami.html[/url] пункт 5 "умножения матриц"
    std::cout << m5;
    std::cout << "Присвоим последней матрице, выведенной на экран, значение первой матрицы:"<<std::endl;
    m5 = m1;// перегруженная операция =
    std::cout << m5;
    system("pause");
    return 0;
 
}


Вернуться к обсуждению:
Отделение интерфейса от реализации C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2015, 18:54
Готовые ответы и решения:

Отделение интерфейса от реализации класса: компиляция кода реализации
Доброго времени суток, У меня возникла проблема с отделением интерфейса от реализации класса....

Отделение интерфейса от реализации
Доброго времени суток! Имеется вопрос по теме, обозначенной в заголовке. Предположим, я...

Класс, отделение интерфейса от реализации
Всем привет. Пытаюсь разделить интерфейс от реализации. вот исходный код: файл GradeBook.h ...

Отделение интерфейса класса от реализации
Осваиваю раздел одной книги &quot;Отделение интерфейса класса от реализации&quot;. То что получилось можно и...

4
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2015, 18:54
Помогаю со студенческими работами здесь

Отделение интерфейса класса от его реализации
Всем привет! Прочитал все найденные похоже темы, но ответа на свой вопрос я не нашел. Поэтому...

Разделение интерфейса и реализации
Добрый день. Пытаюсь разделить проект, создал второй cpp и h файлы. Переменные объявлял в .h, были...

Какие механизмы обеспечивают разделение интерфейса и реализации?
Добрый день! Не подскажите какие механизмы обеспечивают разделение интерфейса и реализации? Чем...

Отделение интерфейса от реализации
Задача была разделить интерфейс от реализации. линковщик g++ ругается на неопределение функций в...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru