Initialisation d'une valeur comme une fonction

Bonjour,

Je lis un code pour comprendre sont fonctionnement et je remarque que les variables sont initialisé comme des fonctions!

dans le .h j’ai uint8_t pin; puis dans le .cpp pin(0) !

J’ai voulu faire un test rapide pour tester ceci.

#include <iostream>

using namespace std;
int main(int argc, char *argv[]) {
	int value;
	
	value(4);
	
	printf("value = %d", value);
}

mais j’ai le message que je m’attendais

Untitled 2.cpp:7:7: error: called object type 'int' is not a function or function pointer
        value(4);
        ~~~~~^
1 error generated.

Le bibliothèque que je regarde c’est la Bounce2

Bonjour,

Ce n'est pas une fonction, c'est un appel au constructeur.
L'appel au constructeur n'est fait qu'à la définition de la variable.

int value(4);

La variable est définit dans le .h puis initialiser dans le .cpp non ?

.h

protected:
    unsigned long previous_millis;
    uint16_t interval_millis;
    uint8_t state;
    uint8_t pin;

.cpp

Bounce::Bounce()
    : previous_millis(0)
    , interval_millis(10)
    , state(0)
    , pin(0)
{}

Oui, car dans le constructeur d'une class, on peut faire appel au constructeur des class incluses.

Merci :slight_smile: