C ++ нет подходящего конструктора по умолчанию - PullRequest
2 голосов
/ 12 марта 2012

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

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

Во-вторых, почему эта строка невозможна?// System :: Drawing :: Color color;

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

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
}

Ответы [ 3 ]

1 голос
/ 12 марта 2012

Поместите определение класса 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 голос
/ 12 марта 2012

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

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

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

1 голос
/ 12 марта 2012

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

#include "Car.h"

до Form1.h.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...