rzutowanie na wielowymiarową tablicę

0

zastanawiam się jak to zrobić. kompilator tego z wiadomych przyczyn nie przyjmuje:

void function(int width, int height, void* img)
{
  // chodzi mi mniej wiecej o cos takiego:
  // unsigned char& tab[width][height] = (unsigned char[width][height])img;
  // ...
}

int main()
{
  unsigned char img[233][323];
  function(233,233,img);

  unsigned char img[123][123];
  function(123,123,img);

  return 0;
}
0

img stworzyłeś jako tablicę dwuwymiarową, a deklaracja funkcji function ma void* zamiast void**

0

To nie przejdzie w ten sposób. Jeśli piszesz w C++, użyj szablonów:

template <int X, int Y> 
void function(unsigned char img[X][Y])
{
        ...
}

unsigned char img[233][323];
function<233,323>(img);
0

dzieki :) znasz moze jakas dobra ksiazke lub jakis artykul o szablonach? szczerze mowiac to nawet nie wiedzialem ze mozna je wykorzystac w ten sposob :)

0
0x666 napisał(a)

To nie przejdzie w ten sposób. Jeśli piszesz w C++, użyj szablonów:

template <int X, int Y> 
void function(unsigned char img[X][Y])
{
        ...
}

unsigned char img[233][323];
function<233,323>(img);

Świetny sposób, żeby narobic sobie kłopotów. A co jak będzie chciał przekazać do funkcji tablicę dynamiczną?

0

jak krytykujesz to napisz lepszy sposób, inaczej wolałbym żebyś nie spamował

0

Lepszy sposób? Std::vector.

1 użytkowników online, w tym zalogowanych: 0, gości: 1