[C++] Elegant arrays defineren

Pagina: 1
Acties:

  • GREENSKiN
  • Registratie: November 1999
  • Laatst online: 22-05 17:27
Het liefst wil ik in mijn header file, een hele reeks (kleine) bitmaps definiëren. Deze bitmaps bestaan uit unsigned chars (via een macro -> BYTE), ze moeten benaderbaar zijn vanuit een array.

Zelf dacht ik in eerste instantie om dat op deze manier te doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
enum {
    pdNone = 0,
    pdSaw,
    pdAltSaw ...etc
};

BYTE pdCharacter[8][2][8];

pdCharacter[pdNone][0] = {
                            0x06,  // 00110   ## 
                            0x09,  // 01001  #  #
                            0x09,  // 01001  #  #
                            0x11,  // 10001 #   #
                            0x00,  // 00000      
                            0x00,  // 00000      
                            0x00,  // 00000      
                            0x00}; // 00000      
    
pdCharacter[pdNone][1] = {
                            0x00,  // 00000      
                            0x00,  // 00000      
                            0x00,  // 00000      
                            0x01,  // 00001     #
                            0x12,  // 10010 #  # 
                            0x12,  // 10010 #  # 
                            0x12,  // 10010 #  # 
                            0x0C}; // 01100  ##  

... etc


Maar, dat gaat natuurlijk veel te makkelijk. ANSI C++ forbids declaration of ... with no type. Bovendien mag ik dit soort toewijzigingen niet doen in de header file, en moet het persé gebeuren via een initialisatie functie. De workaround is voor mij om nu al deze bitmaps eerst te definiëren via een tijdelijke variabele, en die dan te koppelen aan de array. Erg omslachtig. Zie ik iets over het hoofd, is het mogelijk om de type van mijn array toch toe te wijzen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

en moet het persé gebeuren via een initialisatie functie
waarom?
En je kunt toch gewoon multidimensionale arrays initialiseren :?
C++:
1
2
3
4
int a[3][4] =
  { { 1, 2, 3, 4 },
    { 5, 6, 7, 8 },
    { 9, 10, 11, 12 } };

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • GREENSKiN
  • Registratie: November 1999
  • Laatst online: 22-05 17:27
Meerdere haakjes, hmmm :)

Even m'n conversiescript overhoop gooien :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het kan overigens ook zonder die meerdere haakjes

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.