LINUX.ORG.RU

запутался с поинтерами (в который раз)


0

0

Ниже следующий отрывок кода илюстрирует такую вот проблему:
в функции main существуют массивы (1, 2-х и 3-мерные). Дан класс, все функции, которого обязаны иметь доступ к этим массивам. Так как массивов много, хочу держать в классе статические ссылке (поинтеры или чего есче). Пожалуйста, не обясняйте мне что это совершенно долбанный дезайн. Я это знаю, но ничего поделать не могу, т.к. программа мне досталась по наследству и переделывать дезайн - не могу.
Помогите скомпилировать
#include <iostream>
#define X 3
#define Y 10
using namespace std;
class A {
public:
static void setup (float (a[X][Y]), int b[]);
static void print();
static void add();

static float arr[X][Y];
static int *brr;
};

void A::setup(float a[X][Y], int b[]) {
brr=b;
arr=a;
}

void A::print() {
for (int i=0;i<X;++i) {
for(int j=0;j<Y;++j) {
cout<<arr[i][j]<<' ';
}
cout<<endl;
}
}

void A::add
() {
for (int i=0;i<X;++i) {
for(int j=0;j<Y;++j) {
arr[i][j]+=1000.1111;
}

}
}


int main(int argc, char *argv[]) {
float arr[X][Y];
int brr[Y];

return 0;
}

hello.cpp: In static member function &#8216;static void A::setup(float (*)[10], int*)&#8217;:
hello.cpp:17: error: incompatible types in assignment of &#8216;float (*)[10]&#8217; to &#8216;float [3][10]&#8217;
gmake: *** [zhello.lo] Error 1

★★

Дошло:
class A {
public:
    static void setup (float (a[][Y]), int b[]);
    static void print();
    static void add();

    static float (*arr)[Y];
    static int *brr;
};
 float (* A::arr)[Y];
 int *A::brr;
void A::setup(float a[][Y], int b[]) {
    brr=b;
    arr=a;
}

phrm ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.