#include <iostream>
using namespace std;
class matrix
{
private:
int a;
int b;
int dim[a];
public:
matrix ( int f, int s )
{
a = f;
b = s;
}
};
int main()
{
return 0;
}
Как определить размерность массива в классе конструктором?
Я думаю из уровня задачи, понятно что об STL речь пока не идёт..
Возможно ли её решить без динамических массивов и STL?
Цитата: EXAngel
Не могу понять как можно задать размерность массива в классе с помощью конструктора, если она должна быть константной.
Реальный размер памяти, выделенный под матрицу - аккурат 10х10 ячеек (даблов, флоатов, интов - не важно).
Цитата: EXAngel
Я думаю из уровня задачи, понятно что об STL речь пока не идёт..
Возможно ли её решить без динамических массивов и STL?
Возможно ли её решить без динамических массивов и STL?
Пользователь класса задает нужный ему размер матрицы, фактической размерностью меньшей, чем реальный размер памяти. Например 5х6 ячеек. Или 20х3 (памти такая матрица займет меньше чем 10х10).
Ваша задача переопределить у этого класса оператор [] и добавить в него проверку выхода за границу. Логическая граница какраз задается из конструктора.
Если требуемый пользователем размер матрицы больше чем 10х10 ячек, то можно, к примеру, генерировать исключение.
Честно говоря не понял, я еще начинающий, не могли бы вы пояснить примером?
Код:
class matrix
{
private:
int a;
int b;
int **dim;
public:
matrix ( int f, int s )
{
a = f;
b = s;
dim = new int*[a];
for (int i = 0;i < a; i++)
dim = new int;
}
};
{
private:
int a;
int b;
int **dim;
public:
matrix ( int f, int s )
{
a = f;
b = s;
dim = new int*[a];
for (int i = 0;i < a; i++)
dim = new int;
}
};
только еще ~matrix() добавить нада х)
Цитата:
только еще ~matrix() добавить нада х)
В смысле пустой конструктор?
это диструктор,он обозначется так ~matrix(). В конструкторе ты выделяешь память, а в диструкторе ты освобождаешь ее. Смысл ясен ?
Наверное автор торопит события..
Т.е. не существует способа решить задачу без динамических массивов и STL?
P.S. В любом случае спасибо за помощь, буду изучать.
Код:
#include <iostream>
using namespace std;
class matrix
{
private:
int I;
int J;
int dim[10][10];
public:
matrix ( int f, int s )
{
I = f;
J = s;
}
void init();
void show();
};
void matrix::init(){
for(int i=0;i<I;i++){
for(int j=0;j<J;j++){
.....}
}
..........
using namespace std;
class matrix
{
private:
int I;
int J;
int dim[10][10];
public:
matrix ( int f, int s )
{
I = f;
J = s;
}
void init();
void show();
};
void matrix::init(){
for(int i=0;i<I;i++){
for(int j=0;j<J;j++){
.....}
}
..........
задача имено так и решается походу х))
Я бы не догадался, спасибо!