Ik heb de gewoonte van java en C# om standaardwaarden en dergelijke als member variabelen te zetten
(dus dat je bvb connector.connect (int port) kan aanspreken met connector.connect(connector.defaultport) zeg maar).
Ik heb de indruk dat dat ook de techniek is die in C++ gangbaar is (preprocessor constanten werken wel nog maar ze raden overal const aan). Ik zou graag bevestiging hebben dat dat inderdaad zo is, voor ik een verkeerde techniek aanleer.
Op dit moment heb ik echter ook een concreet probleem. Ik heb een nieuwe klasse gemaakt "dimensie"
en ben nu bezig met een andere klasse te maken :
Zoals je kan zien wil ik een static const variabele aanmaken van het type van mijn klasse, een dimensie.
Het probleem is nu echter dat ik bij <probleembron> heb gevonden in de cursussen van C++ die ik heb dat je die dus braaf zo moet declareren, maar niet definieren, en dat je die buiten de body zou moeten definiëren.
Daar was ik dus mee bezig, maar blijkbaar kan die bij <probleem1> niet aan de members om één of andere reden? Mijn idee was om alle members handmatig via de setters te initialiseren, vermits ik geen constructor heb (als ik het goed begrepen heb kan je die daar toch niet eens aanspreken) want dan komen we bij <probleem2> .
Dat probleem 2 was namelijk dat het enige voorbeeld dat ik gevonden heb met klassen de string klasse gebruikte, en die is natuurlijk netjes met operator = en al gedefinieerd waardoor die een initialisatie in de stijl van een int (const var naam = waarde) aankan.
Het probleem is dus : Hoe initialiseer ik een (static) const object op correcte wijze?
(dus dat je bvb connector.connect (int port) kan aanspreken met connector.connect(connector.defaultport) zeg maar).
Ik heb de indruk dat dat ook de techniek is die in C++ gangbaar is (preprocessor constanten werken wel nog maar ze raden overal const aan). Ik zou graag bevestiging hebben dat dat inderdaad zo is, voor ik een verkeerde techniek aanleer.
Op dit moment heb ik echter ook een concreet probleem. Ik heb een nieuwe klasse gemaakt "dimensie"
C++: Dimensie.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| class Dimensie { public: Dimensie(void); ~Dimensie(void); //Getters & setters unsigned Rijen(){return rijen;} void Rijen(int aantalRijen) {this->rijen=aantalRijen;} unsigned Kolommen(){return kolommen;} void Kolommen(int aantalKolommen) {this->kolommen=aantalKolommen;} private: unsigned rijen, kolommen; }; |
en ben nu bezig met een andere klasse te maken :
C++: toolkit.h
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
| class Toolkit { public://Constructors Toolkit(void); public://Destructor ~Toolkit(void); public://Methods <snip> /** *Display a two dimensional uint8_t array with a 4*4 dimension as a 2D matrix, with a string as display name. */ static void DisplayMatrix(uint8_t **block, string name); /** *Display a two dimensional uint8_t array with a given dimension as a 2D matrix, with a string as display name. */ static void DisplayMatrix(uint8_t **block, int horizontal_dimension, int vertical_dimension, string name); <snip> static const Dimensie standaardDimensie;<probleembron> }; const Dimensie Toolkit::standaardDimensie.<probleem1> = <probleem2>; |
Zoals je kan zien wil ik een static const variabele aanmaken van het type van mijn klasse, een dimensie.
Het probleem is nu echter dat ik bij <probleembron> heb gevonden in de cursussen van C++ die ik heb dat je die dus braaf zo moet declareren, maar niet definieren, en dat je die buiten de body zou moeten definiëren.
Daar was ik dus mee bezig, maar blijkbaar kan die bij <probleem1> niet aan de members om één of andere reden? Mijn idee was om alle members handmatig via de setters te initialiseren, vermits ik geen constructor heb (als ik het goed begrepen heb kan je die daar toch niet eens aanspreken) want dan komen we bij <probleem2> .
Dat probleem 2 was namelijk dat het enige voorbeeld dat ik gevonden heb met klassen de string klasse gebruikte, en die is natuurlijk netjes met operator = en al gedefinieerd waardoor die een initialisatie in de stijl van een int (const var naam = waarde) aankan.
Het probleem is dus : Hoe initialiseer ik een (static) const object op correcte wijze?