Aanschouw het volgende stukje C++-code:
Deze worden ergens anders in de source gedefinieerd:
Nu wil ik een reference maken naar één van deze arrays. Het moet een reference zijn, omdat hij op veel plaatsen in de code aangesproken wordt als:
en ik te lui ben om die allemaal aan te passen.
Nu dacht ik dat zo op te lossen (in de Displayer class):
met een assignment die een cast gebruikt (anders compileert het niet):
Het probleem is, dat dit wel compileert, maar bij het linken krijg ik een zooi "Undefined reference to `Displayer::block_colors'".
Ik heb het idee dat ik iets heel stoms over het hoofd zie, maar ik krijg deze code met geen mogelijkheid werkend. Kan iemand hier eens zijn licht op laten schijnen? Als er een methode is zonder een reference te gebruiken (voor mijn gevoel moet een const GLfloat** ook werken) mag dat ook. Alvast bedankt!
C++:
1
2
3
4
5
6
| class Displayer { // ... static const GLfloat normal_block_colors[BF_NUMBER][3]; static const GLfloat colourblind_block_colors[BF_NUMBER][3]; // ... } |
Deze worden ergens anders in de source gedefinieerd:
C++:
1
2
3
4
5
6
7
8
9
| const GLfloat Displayer::normal_block_colors[BF_NUMBER][3] = { { 0.73f, 0.0f, 0.73f }, // ... { 2.0f * 1.0f, 2.0f * 0.4f, 2.0f * 0.0f } }; const GLfloat Displayer::colourblind_block_colors[BF_NUMBER][3] = { { 0.95f, 0.95f, 0.95f }, // ... { 2.0f * 1.0f, 2.0f * 0.4f, 2.0f * 0.0f } }; |
Nu wil ik een reference maken naar één van deze arrays. Het moet een reference zijn, omdat hij op veel plaatsen in de code aangesproken wordt als:
C++:
1
| yadda = block_colors[foo][bar]; |
en ik te lui ben om die allemaal aan te passen.
Nu dacht ik dat zo op te lossen (in de Displayer class):
C++:
1
2
| static const GLfloat **&block_colors; // references either normal_block_colors or colourblind_block_colors |
met een assignment die een cast gebruikt (anders compileert het niet):
C++:
1
| block_colors = (const GLfloat**)normal_block_colors; |
Het probleem is, dat dit wel compileert, maar bij het linken krijg ik een zooi "Undefined reference to `Displayer::block_colors'".
Ik heb het idee dat ik iets heel stoms over het hoofd zie, maar ik krijg deze code met geen mogelijkheid werkend. Kan iemand hier eens zijn licht op laten schijnen? Als er een methode is zonder een reference te gebruiken (voor mijn gevoel moet een const GLfloat** ook werken) mag dat ook. Alvast bedankt!
[ Voor 1% gewijzigd door WildernessChild op 18-07-2004 20:41 . Reden: layoutfix ]
Maker van Taekwindow; verplaats en resize je vensters met de Alt-toets!