На дистанционке не приняли код на C++.
Почти переделал, но есть непонятный момент
Среда - Microsoft Visual C++ 6.0
class Car{
private:
char* marka; //марка авто
int power; //мощность двигателя в кВт
float cost; //стоимость в тыс. $
int displacement; //объём двигателя
public:
void setData(char* m, int pw, float p, int dis) {
marka = m;
power = pw;
cost = p;
displacement = dis;
}
std::string getData() {
string to_return = "Marka is ";
to_return += marka;
return to_return;
}
public:
Car(char* m = "Renault", int pw = def_power, float p = def_price, int dis = def_displacement){ //создание объекта по умолчанию
marka = m;
power = pw;
cost = p;
displacement = dis;
};
public:
void Print(){ //вывод параметров на экран
cout << getData() << endl;
cout << "Price equals " << cost << " thousand $" << endl;
cout << "Power equals " << power << " kW" << endl;
cout << "Displacement equals " << displacement << " cm3" << endl;
};
void Input(); //функция ввода параметров, ещё не определена
};
void Car::Input(){ //функция ввода параметров
char *marka_ = new char; //создаём динамический объект marka
std::cout << "Input mark: "; //введите марку авто
std::cin >> marka_;
std::cout << std::endl;
do{
std::cout << "Input power (kW): "; //введите мощность авто в кВт
std::cin >> power;
} while(power < 0);
std::cout << std::endl;
do{
std::cout << "Input cost (thousand $): "; //введите стоимости авто в тыс. $
std::cin >> cost;
} while(cost < 0);
std::cout << std::endl;
do{
std::cout << "Input displacement (cm3): "; //введите объём двигателя в см3
std::cin >> displacement;
} while(displacement < 0);
std::cout << std::endl;
Car ipnut; //создание нового объекта
ipnut.setData(marka_,power,cost,displacement);
ipnut.Print(); //вывод параметров объекта на экран
delete marka_;
};
Строчка delete marka_ вызывает ошибку
DAMAGE: after Normal block (#80) at 0x008C1990
Всё это при том, что в основном cpp файле удаление динамических объектов работает.
Кроме того, хотелось бы на всякий случай сделать проверку, введено ли число.
А ещё написали "Разделяйте код заголовочных файлов .h, реализацию методов сделайте в соответствующих cpp-файлах".
UPD: главную проблему решил, изменив просто char на char[16]