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

Матрица из Колонок определённой длины. Конструктор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дано 2 тестовых файла . Получить 3-й который содержит поочередно строки из 2-х файлов http://www.cyberforum.ru/cpp-beginners/thread566169.html
Дано 2 тестовых файла . Получить 3-й который содержит поочередно строки из 2-х файлов
C++ Растровое рисование обмен между классами Есть класс в который с контекста устройства сохраняет изображения в файл, со своими пременными и окном в котором есть картинка Есть воторой который из HANDLа рисует изображение в свое окно Я хочу, чтобы после какого-то события, второй класс рисовал с своем окне изображение из первого. Первый для моих нужд получал Cbitmap со своего контектста из него возвращал хэндл, внутри него... http://www.cyberforum.ru/cpp-beginners/thread566154.html
C++ Вывести на экран сведений о книгах: автор, название, год издания
Программирование задач обработки структур и файлов Даны сведения о книгах: автор, название, год издания. Вывести на экран сведения о книге "Информатика", упорядочив по возрастанию. Заранее спасибо.
C++ Программа определения счастиливого числа в С++
Определить есть ли заданное шестизначное число счастиливым ( сумма первых трёх цифр должна быть равноей сумме трёх последних) с использованием цыкла for или while. Заранее спасибо.
C++ Строка: Имеются четыре буквы, необходимо удалить из массива все символы, кроме этих четырех и "склеить" оставшееся в непрерывный символьный массив. http://www.cyberforum.ru/cpp-beginners/thread566125.html
Имеются четыре буквы, необходимо удалить из массива все символы, кроме этих четырех и "склеить" оставшееся в непрерывный символьный массив.
C++ Пользовательский интерфейс к программе с Matrix Все доброго дня!! Перейду стразу к делу: Есть рабочая программа с Matrix, и мне надо сделать к ней пользовательский интерфейс, типа когда нажимаешь 1: подсчитывало кол-во столбцов, а когда нажимаешь 2: подсчитывало кол-во строк. А как это сделать уме не приложу((( -- Если кто знает помогите с этим интерфейсом! Вот сама задача: Класс Matrix: #include <iostream> #include <stdio.h> #include... подробнее

Показать сообщение отдельно
Jelum
0 / 0 / 0
Регистрация: 30.05.2010
Сообщений: 17
05.05.2012, 23:02     Матрица из Колонок определённой длины. Конструктор
Нужно создать матрицу содержащую массив элементов класса Колонка. Если брать размер колонки по умолчанию - всё работает, но если потребуется размер не по умолчанию выдаёт кучу ошибок, как мне кажется, воспринимая вызов конструктора как вызов левой функции в операторе new. Как правильно написать конструктор и копирующий конструктор класса Матрица?
Column.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
25
26
27
28
29
30
31
32
33
#ifndef _COLUMN_H
#define _COLUMN_H
class Column{
    int *arr;
    unsigned size;
public:
    // builders
    Column(unsigned n = 10) : size(n){ arr = new int[n];};
    Column(const Column &org);
    ~Column() {delete [] arr;};
 
    friend ostream& operator << (ostream &output, const Column &right);
    friend istream& operator >> (istream &input, Column &right);
    
    // operators
    const Column operator + (const Column &right);
    const Column operator - (const Column &right);
    const Column operator * (const int num);
    friend const Column operator * (const int num, Column &left);
    bool operator == (const Column &right) const;
    const Column operator ++ (); // prefix
    const Column operator -- (); // prefix
    const Column operator ++ (int); // postfix
    const Column operator -- (int); // postfix
    Column operator ! ();
    int& operator [] (unsigned index); // for non const
    const int operator [] (unsigned index) const; // for const
    Column& operator = (const Column &right);
    
    // functions
    int getsize() const {return size;};
    };
#endif // _COLUMN_H


Matrix.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "column.h"
class Matrix{
    unsigned size;
    Column *matr;
public:
    Matrix(unsigned cols, unsigned rows);
    Matrix(const Matrix &right);
    ~Matrix() {delete [] matr;};
 
    friend ostream& operator >> (ostream &output, const Matrix& right);
    friend istream& operator << (istream &input, Matrix &left);
 
    const Matrix& operator + (const Matrix &right);
    const Matrix& operator * (const Matrix &right);
    Column& operator [](unsigned index); // for non const
    const Column operator [](unsigned index) const; // for const
    Matrix& operator = (const Matrix &right);
 
    // funcs
    unsigned GetSize() const {return size;};
    };


Matrix.cpp (часть с конструкторами):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cassert>
#include "matrix.h"
 
Matrix::Matrix(unsigned cols = 4, unsigned rows = 4){
    size = cols;
    *matr = new (nothrow) Column(rows)[size];
    }
 
Matrix::Matrix(const Matrix &right){
    size = right.GetSize();
    *matr = new (nothrow) Column(right[0].getsize()) [size];
    assert(matr);
 
    for(int i = 0; i < size; i++)
        *(matr + i) = right[i];
    }


Добавлено через 9 часов 21 минуту
Вопрос ещё актуален
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru