Go Down

Topic: Initialisation d'une valeur comme une fonction (Read 137 times) previous topic - next topic

spyrto

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.

Code: [Select]
#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

Code: [Select]
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

kamill

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.
Code: [Select]
int value(4);

spyrto

#2
Jul 22, 2018, 10:53 am Last Edit: Jul 22, 2018, 10:53 am by spyrto
La variable est définit dans le .h puis initialiser dans le .cpp non ?

.h
Code: [Select]
protected:
    unsigned long previous_millis;
    uint16_t interval_millis;
    uint8_t state;
    uint8_t pin;


.cpp
Code: [Select]
Bounce::Bounce()
    : previous_millis(0)
    , interval_millis(10)
    , state(0)
    , pin(0)
{}

kamill

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


Go Up