Я в значительной степени новичок с C++ и с трудом прокладываю себе путь через указатели.Получите строку из динамически выделенного двумерного указателя массива
//Define Colormaps (for brevity they are null)
//256 rgb combinations in each colorMap
uint8_t colorMap0[256][3];
uint8_t colorMap1[256][3];
//Insert Color Maps in to a storage array via pointer
uint8_t *colorMaps[] = {*colorMap0, *colorMap1};
//Well define a current Map Index to read from colorMaps
uint8_t colorMapIndex = 0;
//We will define a pointer to the active array that we'll update in loop()
uint8_t *currentColorMap;
Иногда мы переназначить текущую карту цвета
currentColorMap = colorMaps[colorMapIndex];
и другие времена также получить значения из него
uint32_t c = GetColorFromMap(125);
Мы нужны эти функции, а
// Create a 24 bit color value from B,G,R
uint32_t Color(uint8_t r, uint8_t g, uint8_t b)
{
uint32_t c;
c = r;
c <<= 8;
c |= g;
c <<= 8;
c |= b;
return c;
}
uint32_t GetColorFromMap(byte indexValue)
{
uint8_t rgb = currentColorMap[indexValue];
return Color(rgb[0], rgb[1], rgb[2]);
}
Проблема заключается в том, как получить значения с текущей цветовой карты
Текущий код дает мне 3 'invalid types 'uint8_t {aka unsigned char}[int]' for array subscript'
ошибок в return Color(rgb[0],...
.
Я попытался указатели от currentColorMap но получить:
invalid type argument of unary '*' (have 'uint8_t {aka unsigned char}')
Я должен использовать soultion с низкой печати ножной памяти, как это происходит на Arduino. Раньше я делал массив размером 256x3, который убивал мою динамическую память ... однако это скомпилировано. Если это не одно, то другое!
Вы должны начать с обучения, что С и С ++ являются разными языками, C++ просто нравится чувствовать себя с, но она не может, с лучше. Поэтому, пожалуйста, выберите язык. И я предлагаю c, потому что, если вы выберете C++, они скажут вам использовать 'std ::' stuff. –
Код C может быть скомпилирован как C++; они являются фундаментально родственными языками: их называют аналогично по причине.Кроме того, для CodeMode, я думаю, вы хорошо осведомлены о предмете, но, надеюсь, вы не будете выбирать язык, основанный на какой-то случайной необоснованной жалобе. Надеюсь, если вы изучите его, вы будете исследовать их обоих. – Cosine
@iharob Технически среда разработки arduino - это C++, но я бы предпочел родное решение C, поскольку я боюсь так называемого std :: stuff – CodeMode