2 votes

Comment corriger l'erreur "no instance of constructor matches argument list" en C++ ?

J'apprends le C++ en ce moment et j'écris un programme qui utilise la liste des initialisateurs de membres. Voici le code avec lequel je travaille :

#include <cstdio>

struct ClockOfTheLongNow {
    ClockOfTheLongNow() { 
        year = 2019;
    }
    void add_year() {
        year++;
    }
    bool set_year(int new_year) { 
        if (new_year < 2019) return false;
        year = new_year;
        return true;
    }
    int get_year() const { 
        return year;
    }
private:
    int year;
};

struct Avout{
    Avout(const char* name, long year_of_apert) : name{ name }, apert{ year_of_apert } {

    }
    void announce() const {
        printf("My name is %s and my next apert is %d.\n", name, apert.get_year());
    }
    const char* name;
    ClockOfTheLongNow apert;
};

int main() {
    Avout raz{ "Eramas", 3010 }; 
    Avout jad{ "Jad", 4000 };
    raz.announce();
    jad.announce();
}

L'erreur que je reçois provient de cette ligne où il est écrit apert{ year_of_apert } :

Avout(const char* name, long year_of_apert) : name{ name }, apert{ year_of_apert } {

L'erreur que je reçois en retour est la suivante :

no instance of constructor "ClockOfTheLongNow::ClockOfTheLongNow" matches the argument list -- argument types are: (long)

J'ai déjà essayé de chercher des solutions au problème mais, jusqu'à présent, je n'ai pas eu de chance. Le résultat attendu est censé être le suivant :

My name is Erasmas and my next apert is 3010.
My name is Jad and my next apert is 4000.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X