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

ошибки при построении проекта - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа должна выводить аналог целочисленной таблицы умножения для дробей http://www.cyberforum.ru/cpp-beginners/thread858858.html
Задача из учебника Р.Лафоре Доброго времени суток! Я изучаю С++ самостоятельно, по данному учебнику, столкнулся с задачей: Используйте преимущество ООП, заключающееся в том, что однажды созданный класс можно помещать в другие программы. Создайте новую программу, которая будет включать класс fraction, созданный в упражнении 11. Программа должна выводить аналог целочисленной таблицы умножения...
C++ Изменение цвета букв и фона в консоле Подскажите какие функции нужно использовать чтобы можно было закрашивать различным цветом слова и фон вокруг этих слов при выводе на экран? http://www.cyberforum.ru/cpp-beginners/thread858854.html
C++ Сортировка
(С++) Есть такое задание: Даны К целых чисел А(1),...,А(К). Вычислить а) наибольшее, b) наименьшее, c) наиболее близкое к нулю. Помогите пожалуйста! Есть решение для а) и b)
C++ диагностика функционирования компьютерной мыши
дорогие мои кому не трудно,Помогите!программа для диагностики функционирования компьютерной мыши. написал часть кода для отслеживания положения курсора... #include <stdio.h> #include <time.h> #include <windows.h> int main(){ SetConsoleCP(1440); SetConsoleOutputCP(990);
C++ Альтернатива виртуальным функциям в конструкторе http://www.cyberforum.ru/cpp-beginners/thread858843.html
Доброе время суток, коллеги! В процессе разработки одной библиотечки столкнулся с такой проблемой: Допустим есть базовый класс Popcorn. Когда я создаю Popcorn, он "приготавливается" прямо в своём конструкторе: засыпается кукуруза, включается печь, добавляется некоторый ингредиент и т.д. Я хочу предложить своим довольным покупателям аж три разных попкорна: простой, солёный и сладкий....
C++ Область видимости, пространства имен имею макрос #define max(a,b) (((a) > (b)) ? (a) : (b)) он определен в Windows.h, который мне нужен в проекте... также мне нужна это строчка в коде cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); вопрос...каким с чего компилятор решил, что мне нужно использовать макрофункцию?..и как это вылечить?..) пишет ошибку, что нехватает параметров подробнее

Показать сообщение отдельно
SimpleX
1 / 1 / 0
Регистрация: 23.11.2008
Сообщений: 7
08.05.2013, 04:22     ошибки при построении проекта
vladuxa, судя по всему, это какая-то лабораторная работа.

В вашем коде есть некоторые странности: удаление массива в конструкторе по умолчанию, разделение функции sum на 2 функции в Matrix.cpp (явная ошибка). Разумеется, такое собираться не будет.

Ниже приведен переписанный код. Повторов много, по этому поводу я не заморачивался. Будет желание - сами сделаете "рефакторинг".
main.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
36
37
#include<iostream>
#include<stdlib.h>
#include"matrix.h"
#include<time.h>
 
using namespace std;
 
int main()
{
  const int m = 2;
  const int n = 2;
 
  int values [m][n];
 
  srand(time(NULL));
 
  for(int i = 0; i < m; i++)
    for(int j = 0; j < m; j++)
      values[i][j] = rand() % 50 + 1;
 
  int * pointers[m];
 
  for (int i = 0;i < m; i++)
  {
    pointers[i] = values[i];
  }
  Matrix uno(pointers, m, n);
  cout << "matrix" << endl;
  uno.print();
  cout << endl;
 
  Matrix dos = uno + uno;
  cout << "sum matrix" << endl;
  dos.print();
 
  return 0;
}
Matrix.h
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
#ifndef MATRIX_H
#define MATRIX_H
 
class Matrix
{
public:
  Matrix();
  Matrix(const Matrix& obj);
  Matrix(const unsigned int rows, const unsigned int columns);
  Matrix(int** values, unsigned int rows, unsigned int columns);
  ~Matrix();
 
  Matrix operator +(const Matrix& obj);
  Matrix& operator =(const Matrix& obj);
 
  void print();
 
private:
  unsigned int columns;
  unsigned int rows;
  int** matrix;
};
 
#endif // MATRIX_H
Matrix.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
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
#include <iostream>
#include "Matrix.h"
#include <assert.h>
 
using namespace std;
 
Matrix::~Matrix()
{
  for (unsigned int i = 0; i < rows; ++i)
    delete [] matrix[i];
 
  delete [] matrix;
}
 
Matrix Matrix::operator +(const Matrix & obj)
{
  assert(this->rows == obj.rows);
  assert(this->columns == obj.columns);
 
  Matrix result(obj.rows, obj.columns);
 
  for (unsigned int i = 0; i < rows; ++i)
    for (unsigned int j = 0; j < columns; ++j)
      result.matrix[i][j] = obj.matrix[i][j] + this->matrix[i][j];
 
  return result;
}
 
Matrix& Matrix::operator =(const Matrix& obj)
{
  for (unsigned int i = 0; i < rows; ++i)
    delete [] this->matrix[i];
 
  delete [] this->matrix;
 
  this->rows = obj.rows;
  this->columns = obj.columns;
 
  matrix = new int*[rows];
 
  for (unsigned int i = 0; i < rows; ++i) {
    matrix[i] = new int[columns];
 
    for (unsigned int j = 0; j < columns; ++j)
      matrix[i][j] = obj.matrix[i][j];
  }
 
  return *this;
}
 
Matrix::Matrix()
  : matrix(NULL), columns(0), rows(0)
{
}
 
Matrix::Matrix(const Matrix& obj)
  : columns(obj.columns), rows(obj.rows)
{
  matrix = new int*[rows];
 
  for (unsigned int i = 0; i < rows; ++i) {
    matrix[i] = new int[columns];
 
    for (unsigned int j = 0; j < columns; ++j)
      matrix[i][j] = obj.matrix[i][j];
  }
}
 
Matrix::Matrix(const unsigned int rows, const unsigned int columns)
  : rows(rows), columns(columns)
{
  matrix = new int*[rows];
 
  for (unsigned int i = 0; i < rows; ++i)
    matrix[i] = new int[columns];
}
 
Matrix::Matrix(int** values, unsigned int rows, unsigned int columns)
  : rows(rows), columns(columns)
{
  matrix = new int*[rows];
 
  for (unsigned int i = 0; i < rows; ++i) {
    matrix[i] = new int[columns];
 
    for (unsigned int j = 0; j < columns; ++j)
      matrix[i][j] = values[i][j];
  }
}
 
void Matrix::print()
{
  for (unsigned int i = 0; i < rows; ++i) {
    for (unsigned int j = 0; j < columns; ++j)
      std::cout << matrix[i][j] << "\t";
    cout<<endl;
  }
}
 
Текущее время: 17:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru