42 votes

Type de retour non autorisé

Ayant du code:

 struct B
{
    int* a;
    B(int value):a(new int(value))
    {   }
    B():a(nullptr){}
    B(const B&);
}

B::B(const B& pattern)
{

}
 

Je reçois un message d'erreur:
'Erreur 1 erreur C2533:' B :: {ctor} ': les constructeurs n'ont pas permis un type de retour'

Une idée pourquoi?
PS J'utilise VS 2010RC

70voto

GManNickG Points 155079

Vous manquez un point-virgule après votre définition struct .


L'erreur est correcte, les constructeurs n'ont pas de type de retour. Comme il vous manque un point-virgule, cette définition de structure entière est considérée comme un type de retour pour une fonction, comme dans:

 // vvv return type vvv
struct { /* stuff */ } foo(void)
{
}
 

Ajoutez votre point-virgule:

 struct B
{
    int* a;
    B(int value):a(new int(value))
    {   }
    B():a(nullptr){}
    B(const B&);
}; // end class definition

// ah, no return type
B::B(const B& pattern)
{

}
 

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