это мой заголовокне может понять, как Acces этих элементов
#include <SDL.h>
class Grid
{
public:
int** Cells;
int x;
int y;
SDL_Color* palette[255];
Grid(int,int,int);
~Grid();
void DrawGrid(SDL_Renderer*);
void SetPalette(int c, int r, int g, int b, int a);
};
и это мой источник:
Grid::Grid(int a,int b,int s)
{
std::cout << "grid constructed";
x = a;
y = b;
Grid::Cells = (int**) malloc(x*s);
for (int i = 0;i < x;i++)
{
Grid::Cells[i] = (int*)malloc(y*s);
}
SetPalette(1, 255, 255, 255, 0);
}
void Grid::DrawGrid(SDL_Renderer* renderer)
{
std::cout << Grid::palette[Cells[i][o]].r << " : " << Cells[i][o];
SDL_SetRenderDrawColor(renderer, palette[Cells[i][o]].r, palette[Cells[i][o]].g, palette[Cells[i][o]].b, palette[Cells[i][o]].a);
SDL_RenderDrawPoint(renderer, i, o);
}
void Grid::SetPalette(int c, int r, int g, int b, int a)
{
palette[c].r = r;
У меня есть это на зеленый синий и альфа также }
он говорит, что выражение должно иметь тип класса. как я исправить Я очень старался понять это. поэтому я надеюсь, что я получаю ответ, по крайней мере
я сделал удалить некоторые из irellevant кода, чтобы он не займет слишком много места
палитра представляет собой массив указателей, вам необходимо разыменовать перед доступом к членам, изменить любую 'palette [].' To 'palette [] ->'. –
Ваше использование ячеек не соответствует его объявлению. 'Grid :: palette [Cells [i] [o]]' подразумевает 2D-массив целых чисел. Вы указали только двойной указатель на ints. 'int ** Cell;' –
Ячейки - это 2D-массив, и он работает. это было, когда я представил палитру, она запуталась. – Kriso