2012-03-12 4 views
2

У меня есть опыт работы с C#, но синтаксис C++ и конструкция программы создают некоторые проблемы. Я использую Visual C++ 2008. Во-первых, почему существует эта ошибка ?:C++ нет подходящего конструктора по умолчанию

1> ...... \ Form1.h (104): ошибка C2512: 'Cargame :: Car': нет подходящий конструктор по умолчанию

Во-вторых, почему эта линия не возможна? // Система :: Рисование :: Цвет цвета;

ошибка C3265: не может объявить управляемый 'цвет' в неуправляемый 'Автомобиль'

Form1.h содержит:

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(); 
      } 
    }; 
} 

Содержание Car.h:

class Car 
{ 
private: 
     int speed; 
     //System::Drawing::Color color; 

public: 
     Car(); 
}; 

Содержание Car.cpp

#include "stdafx.h" 
#include "Car.h" 
#include "Form1.h" 
#include <math.h> 

//extern TForm1 *Form1; 

Car::Car() 
{ 
     speed = 0; 
} 

void Car::draw() 
{ 
//implementation 
} 
+0

Это не C++, извините. ('public ref class' ... Нет, определенно не C++). Вы имели в виду C++/CLI или какой-то другой вариант? – Arafangion

+0

Я просто принял приложение Windows Forms в новом проекте ... У меня есть 0 опыт работы с C++ –

+0

В какой версии Visual Studio? – Arafangion

ответ

1

Для устранения ошибки C2512 вам нужно добавить:

#include "Car.h" 

к Form1.h.

+0

Это делает еще несколько ошибок о неправильном синтаксисе. Плюс ошибка о C2512 .. –

1

Поместите определение класса Car в том же пространстве имен, в котором было помещено его прямое объявление.

например.

Содержание Car.h:

namespace Cargame { 
class Car 
{ 
private: 
     int speed; 
     //System::Drawing::Color color; 

public: 
     Car(); 
}; 
} 

Содержание Car.cpp

#include "stdafx.h" 
#include "Car.h" 
#include "Form1.h" 
#include <math.h> 

//extern TForm1 *Form1; 
using namespace Cargame; 
Car::Car() 
{ 
     speed = 0; 
} 

void Car::draw() 
{ 
//implementation 
} 
1

неуправляемого кода ошибки, потому что вы объявили неуправляемый указатель, я думаю.

Try Car^car Я думаю, что это правильный синтаксис.

И вам нужно определить свой класс как ref class Car

Смежные вопросы