У меня есть программа, как это:Инициализация элемента данных массива 2D
class A {
int a[2][3];
public:
A(int b[2][3]): a(b) {};
};
int main() {
int b[2][3];
A myclass(b);
return 1;
}
Компилятор говорит:
1.cpp: In constructor 'A::A(int (*)[3])':
1.cpp:5:22: error: incompatible types in assignment of 'int (*)[3]' to 'int [2][3]'
Почему они несовместимы и как я могу инициализировать массив A :: A другой массив b?
Почему у вас есть открытый указатель 'a', указывающий на массив вне класса? Этот класс не создан с надлежащим объектно-ориентированным дизайном. Всегда старайтесь использовать OO при программировании на C++. – Lundin
@ Lundin, ок. Я исправлю это. Но это был небольшой пример ... мне было все равно, кроме ошибки. – klm123
Да, проблема OO - это не только частная инкапсуляция, но и ваш класс не является автономным. Существует зависимость между вашим классом и вызывающим, где класс должен знать и/или требовать, чтобы вещи внешнего мира функционировали по назначению. Могут быть случаи, когда это разумный подход, но в большинстве случаев такие конструкции сомнительны. – Lundin