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
- Ambiguïté dans le constructeur c ++ lorsqu’un constructeur avec un argument par défaut existe
- Invoquer un autre constructeur de la même classe
- Projet Eclipse C ++ non généré: problème de destructeur de constructeur
- C ++ 11 Constructeur supprimé magiquement dans BST
- Copier le constructeur avec une syntaxe de surcharge d’affectation?
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