Ctor pas admis type de retour
Ayant le code:
struct B
{
int* a;
B(int value):a(new int(value))
{ }
B():a(nullptr){}
B(const B&);
}
B::B(const B& pattern)
{
}
J'obtiens le message d'erreur:
"Erreur 1 erreur C2533: B::{ctor}' : constructeurs pas permis à un type de retour'
Aucune idée pourquoi?
P. S. je suis en utilisant VS 2010RC
- ah, la redoutable point-virgule à la fin de la structure de la classe.
Vous devez vous connecter pour publier un commentaire.
Il vous manque un point-virgule après votre
struct
définition.L'erreur est correcte, les constructeurs ont pas de type de retour. Parce que vous êtes en manque un point-virgule, que toute la structure de la définition est considérée comme un type de retour d'une fonction, comme dans:
Ajouter votre point-virgule:
class { /* ...*/ } object;
est autorisé, de sorte que le point-virgule est nécessaire pour indiquer au compilateur qu'il est arrivé à la fin de la définition de la classe.Vous avez besoin d'un meilleur compilateur. Avec g++:
Le point-virgule est nécessaire parce qu'il met fin à une éventuelle liste d'instances de la structure:
Crée trois instances de B, appelée x, y et z. C'est une partie de C++C du patrimoine, et sera encore là dans C++0x.
#include <windows.h>
, et ont donc besoin d'un compilateur qui la comprend, mais j'utilise declarators suivantes struct et class dans mon propre code. Depuis le code que j'ai écris n'est pas disponible publiquement, et Microsoft les en-têtes sont, je pensais qu'ils allaient faire une meilleure illustration.