Полностью согласен со
Swappp.
По сути, задачу в том виде как она была поставлена, мы решили давно.
Цитата: /В главном .cpp - файле:
//объявление массива:
int mas[8][4];
//......инициализация......
//Передача в файл реализации методов:
Essence[i].Rat(mas);
//Прототип в заголовочном файле:
void Rat(int mas[][4]);
//Реализация в файле реализации методов класса:
void CEssence::Rat(int mas[][4])
{
//Вывод массива... В файл, но это не принципиально... Считаем, просто вывод...
ofstream outfile("file.txt",ios::out);
for(int i=0;i<8;i++)
{
for(int j=0;j<4;j++)
{
outfile<<mas[i][j]<<" ";
}
outfile<<endl;
}
}
И, еще раз повторюсь... главное - что, если вывод сделать в функции, принадлежащей главному файлу - все зашибись!
Я тоже не понимаю, что у тебя может не работать?
Цитата: Придется пользоваться плохим стилем и объявлять массив как extern...
Плохим стилем это трудно назвать. Мало ли, какие переменные тебе приспичило сделать глобальными...
Долго думал... минут 5 ..... Вроде я тебя понял.
Вот так что ли?:
Если бы твой класс содержал переменную - динамический массив, например, то можно было бы написать конструктор или функцию класса, отвечающую за его инициализацию . А затем мучить массив - член класса. Тогда
extern не нужен!
реализация:
//---------------------------------------------------------------------------
// main.cpp
//---------------------------------------------------------------------------
#include <stdio.h>
#include "cessence.h"
int Mas[4][8] = {{1,1,1,1,1,1,1,1},{2,2,2,2,2,2,2,2},{3,3,3,3,3,3,3,3},{4,4,4,4,4,4,4,4}};
int main(int argc, char* argv[])
{
// кол-во строк, колонок, сам массив
CEssence Essence(4,8, (int**)Mas);
Essence.Rat();
return 0;
}
//---------------------------------------------------------------------------
// cessence.cpp
//---------------------------------------------------------------------------
#include "cessence.h"
CEssence::CEssence(int i, int j, int **m)
{
Row = i;
Col = j;
massiv = new int*[Row];
for (int r=0;r<Row;r++) {
massiv[r] = new int[Col];
for (int c=0;c<Col;c++)
massiv[r][c] = (int)*m++; // во-о-о как!
}
};
CEssence::~CEssence()
{
for (int i=0;i<Row;i++)
delete [] massiv[i];
delete [] massiv;
};
void CEssence::Rat()
{
for (int i=0;i<Row;i++) {
for (int j=0;j<Col;j++)
printf("%d", massiv[i][j]);
}
};
//---------------------------------------------------------------------------
// cessence.h
//---------------------------------------------------------------------------
class CEssence {
private:
int** massiv; // копия для работы
int Row,Col; // придется столько удалять
public:
CEssence(int i, int j, int **m); // конструктор
CEssence::~CEssence(); // деструктор
void Rat();
};