C ++ aucun constructeur par défaut approprié disponible

J’ai de l’expérience avec C #, mais la syntaxe et la construction du programme C ++ posent quelques problèmes. J’utilise Visual C ++ 2008. Premièrement, pourquoi cette erreur?

1> …… \ Form1.h (104): erreur C2512: ‘Cargame :: Car’: aucun constructeur par défaut approprié disponible

Deuxièmement, pourquoi cette ligne n’est-elle pas possible? // System :: Drawing :: Color color;

erreur C3265: impossible de déclarer une ‘couleur’ ​​gérée dans une ‘voiture’ non gérée

Form1.h contient:

namespace Cargame { using namespaces bla bla bla class Car; public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); } Car* car; protected: ~Form1() { if (components) { delete components; } } SOME MORE AUTOMATICALLY GENERATED CODE private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { panel1->BackColor = System::Drawing::Color::Green; car = new Car(); //car->draw(); } }; } 

Contenu de Car.h:

 class Car { private: int speed; //System::Drawing::Color color; public: Car(); }; 

Contenu de Car.cpp

 #include "stdafx.h" #include "Car.h" #include "Form1.h" #include  //extern TForm1 *Form1; Car::Car() { speed = 0; } void Car::draw() { //implementation } 

Pour résoudre l’erreur C2512, vous devez append:

 #include "Car.h" 

à Form1.h.

Placez la définition d’une classe Car dans le même espace de noms que sa déclaration suivante a été placée.

par exemple

Contenu de Car.h:

 namespace Cargame { class Car { private: int speed; //System::Drawing::Color color; public: Car(); }; } 

Contenu de Car.cpp

 #include "stdafx.h" #include "Car.h" #include "Form1.h" #include  //extern TForm1 *Form1; using namespace Cargame; Car::Car() { speed = 0; } void Car::draw() { //implementation } 

L’erreur de code non géré provient du fait que vous avez déclaré un pointeur non géré, je pense.

Essayez Car ^ car je pense que c’est la bonne syntaxe.

Et vous devez définir votre classe comme classe de ref class Car