Этот код не будет компилироваться:Trouble объявления массива с помощью символьной константы
#ifndef RemoteControl_h
#define RemoteControl_h
#include "Arduino.h"
class RemoteControl
{
public:
RemoteControl();
~RemoteControl();
static void prev_track();
static void next_track();
static void play_pause_track();
static void mute();
static void vol_up();
static void vol_down();
void respond(int code);
void add_code(int code, void (*func)());
private:
boolean active = true;
struct pair {
int _code;
void (*_func)();
};
const int max = 1000;
int database_length = 0;
pair database[max]; //This line doesn't compile unless I use a literal constant instead of "max"
};
#endif
Но если я ставлю ниже раздел в конструкторе для класса вместо этого он работает отлично.
const int max = 1000;
int database_length = 0;
pair database[max];
Мне не разрешено объявлять массив внутри класса в C++ и использовать виртуальную константу как длину? Я работаю в arduino, если это имеет значение, но я ожидаю, что я не понимаю что-то с языком C++, так как это стандартный .h-файл. О, и проблема не в файле .cpp, потому что я полностью удалил его с теми же результатами: компилируется с постоянной константой, а не с виртуальной постоянной длиной.
arduino не поддерживает использование «нового» ключевого слова, по крайней мере, насколько я могу судить. Для первого примера вы затем предлагаете мне это сделать? \t \t const int max = 1000; \t \t int database_length = 0; \t \t int * ptr = (int *) malloc (sizeof (int) * max); \t \t int database []; \t \t database = ptr; –
, то вы можете использовать 'ptr' как массив @j_v_wow_d – snr
Я немного ржавый. В основном я добавляю смещение к ptr, затем разыгрываю и назначаю это право? Назначьте 3 индексу 2 следующим образом ?: * (ptr + 2) = 3 –