Я искал много ресурсов на C++ и массивах. Я узнал, что массивы действуют как указатели в C++, и я смущен тем, как создавать многомерный массив и присваивать значение индексам. Я обычно код в Java и Python, но знаю, что я работаю с Arduino, и мне нужно изучить C++.Arduino - Создание массива из экземпляров и назначение значения [C++]
Мой Arduino (с ++) код относительно этого массива:
#include "Arduino.h"
#include "cell.h"
#include <cell.h>
cell maze[16][16];
cell * current = new cell(1, 1, 0, false, 0);
cell * end_pt = new cell(1,1,1,true);
maze[15][15] = end_pt;
Мои .h и .cpp файлы;
#include "Arduino.h"
#include "cell.h"
#include "Arduino.h"
cell::cell(){
right = 0;
}
cell::cell(int r, int l, int f, bool inf){
right = r;
left = l;
forw = f;
info = inf;
value = 70;
printf("%d\n", right);
printf("%d\n", left);
printf("%d\n", forw);
printf("%d\n", inf);
printf("%d\n", val);
}
cell::cell(int r, int l, int f, bool inf, int val){
right = r;
left = l;
forw = f;
info = inf;
value = val;
printf("%d\n", right);
printf("%d\n", left);
printf("%d\n", forw);
printf("%d\n", inf);
printf("%d\n", val);
}
void cell::setR(int r){
right = r;
}
void cell::setL(int l){
left = l;
}
void cell::setF(int f){
forw = f;
}
void cell::setI(bool inf){
info = inf;
}
void cell::setV(int val){
value = val;
}
int cell::getR(){
return right;
}
int cell::getL(){
return left;
}
int cell::getF(){
return forw;
}
bool cell::getI(){
return info;
}
int cell::getV(){
return value;
}
#ifndef cell_h
#define cell_h
#include "Arduino.h"
class cell{
public:
cell();
cell(int r, int l, int f, bool info);
cell(int r, int l, int f, bool info, int val);
void setR(int r);
void setL(int l);
void setF(int f);
void setI(bool inf);
void setV(int val);
int getR();
int getL();
int getF();
bool getI();
int getV();
private:
int right;
int left;
int forw;
bool info;
int value;
};
#endif
'лабиринт' не назвал тип моей ошибкой. Пожалуйста, помогите и спасибо вам заранее!
Когда я удалить звездочки, то у меня есть/скалярная задача нескалярной. Что это значит? –
@MertKarakas Я предполагаю, что ваш код по-прежнему выглядит так: 'cell end_pt = new cell (1,1,1, true);'? Удалите ключевое слово 'new'. 'new' создает указатель. – DeathTails
@DeathTails вы уверены, что можете скопировать два объекта? Я думаю, вы должны перегрузить оператор =, чтобы иметь возможность копировать их таким образом. – frarugi87