Toon posts:

[C++] static const char, hoe werkt dat?

Pagina: 1
Acties:
  • 56 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb in de header (sampledoc.h) een;

static const char readertmp[5];

gemaakt, maar als ik deze dan in de .cpp initialiseer (tenminste dat denk ik);

const char CSampleDoc::readertmp[5];

dan begint hij te brullen:

'protected: static char const * * CSampleDoc::readertmp' : const object must be
initialized if not extern
'protected: static char const * * CSampleDoc::readertmp' : redefinition; different
type modifiers


(Het boven genoemde werkt prima met een static int).

Mijn vraag is als volgt, is het uberhau[t mogelijk om een static const char te maken. Zo ja, hoe gaat het dan (wel) in zijn werk. BVD

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Je maakt geen static const char, maar een static const char[]
Maarja doe eens wat de foutmelding zegt en initialiseer hem eens
C++:
1
static const char bla[] = { 'f', 'i', 'x', 'i', 't' };

* Glimi durft te wedden dat je een static const char wel later kan initialiseren :)

[edit] Gok:
De reden dat je geen array kan initialiseren is waarschijnlijk dat de hij bij declaratie al reeds gaat verwijzen naar geheugen. Een const waarde kan je niet veranderen, dus ook dat geheugenadres kan niet veranderd worden.

[ Voor 29% gewijzigd door Glimi op 23-07-2003 14:23 ]


Verwijderd

Topicstarter
Hmm, krijg weer een error
Header:

protected:
static const char *readertmp[5];

.cpp:

const char CSampleDoc::readertmp[] = {'b', 'c', 'd', 'e', 'f'};

error:
'protected: static char const * * CSampleDoc::readertmp' : redefinition; different type modifiers

SampleDoc.h(68) : see declaration of 'protected: static char const * * CSampleDoc::readertmp'

unable to recover from previous error(s); stopping compilation
Error executing cl.exe.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
1) Die initialisatie moet dus in de header
2) nu is het weer een static const char* [] (wat dus een static const char ** is!) Die initialiseer je niet zo.

Verwijderd

Topicstarter
begrijp er geen kont van :P
probeer wel het wel ff

Verwijderd

Topicstarter
helaas!

nou ja, toch bedankt voor de moeite...
Misschien dat ik er morgen met een frisse kijk er meer van ga begrijpen :D

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Het lijkt me toch beter als je eerst eens jezelf goed gaat verdiepen in C++. Je probeert nu in een pointer naar charpointers chars te stoppen en schijnt de foutmeldingen niet te begrijpen.
Ook je instelling vind ik niet echt flitsend. Het lijkt wel dat je wacht totdat er hier volledig je oplossing staat ('begrijp er geen kont van', 'krijg weer een error'). Als dat je mentaliteit is, zul je volgens mij nooit echt goed kunnen programmeren en de volgende keer weer dezelfde fouten maken en dat eindeloos lang.

Welnu, zoals ook in de policy staat (Welkom in P&W: FAQ en Beleid *updated: 05-07*) hebben we dat liever niet. We hebben liever dat jij je actiever opstelt en opneemt wat we zeggen, daar weer zelf mee aan de slag gaat enz. enz. Zo 'investeren' wij in jou, zodat jij later ook weer in andere mensen hier op het forum kan investeren.

Succes ermee.
Pagina: 1

Dit topic is gesloten.