2015-10-02 5 views
-2

Je suis novice en C++ et j'essaie de comprendre un code lié à OpenCV. Il a une classe comme suit:Classes C++, aide requise

class Settings 
{ 
public: 
    Settings() : goodInput(false) {} 
    enum Pattern { NOT_EXISTING, CHESSBOARD, CIRCLES_GRID, ASYMMETRIC_CIRCLES_GRID }; 
    enum InputType { INVALID, CAMERA, VIDEO_FILE, IMAGE_LIST }; 
. 
. 
. 
. 
} 

ce qui ne signifie Settings() : goodInput(false) {} ici. Je ne pense pas que ce soit un constructeur. Explique ça s'il te plait.

+0

c'est un constructeur inline vide {} avec une liste d'initialisation (mais un seul élément) – Micka

+0

J'espère qu'il y a un 'bool goodInput' dans la classe quelque part. –

Répondre

2

C'est en effet un constructeur. Ce que vous voyez après : s'appelle initializer-list et il initialise les valeurs avant d'entrer dans les accolades.

Vous devez également savoir que les variables membres d'une classe sont toujours initialisée avant d'entrer dans le corps du constructeur. Si vous ne mentionnez pas une variable membre dans la liste des initialiseurs, elle sera initialisée par défaut.

+0

comment initialiser plus d'une variable de cette façon? –

+0

@AmeerHamza 'Settings(): goodInput (false), otherVariable (true) {}' –

0

Affecte la valeur initiale (par défaut) false au membre (probablement) en vérifiant la validité de l'entrée.