В принципе, у меня есть 2 класса: «Автомобиль» и «Мотор».«Car» имеет setMotor, который должен принимать объект Motor, когда двигатель уже доступен, и наследовать мощность двигателя и выводить его мощность, говоря «brum» для каждой PS, имеющейся в двигателе.Если «powerofmotor» равен 3, то автомобиль должен сделать «brumbrumbrum» при вызове функции перемещения.
Я использую кодовые блоки, поэтому примеры кода делятся на заголовки, файлы cpp и основной файл.
Заголовки:
car.h
class Car:
{
public:
void setMotor(Motor m);
void move();
Car();
private:
int powerofcar = 0;
};
motor.h
class Motor{
friend class Car;
public:
Motor();
Motor(int p); //assign the power -> Motor(3) has 3 PS
private:
int powerofmotor = 0;
}
Файлы Cpp:
car.cpp
Car::Car(){
}
void Car::setMotor(Motor m){
powerofcar = m.powerofmotor;
}
void Car::move(){
if(powerofcar != 0){
for(int i = 0; i < powerofcar; i++){
cout << "Brum";
}
cout << endl;
}
else {
cout << "i move without a motor" << endl;
}
}
motor.cpp
using namespace std;
Motor::Motor(){
}
Motor::Motor(int p){
powerofmotor = p;
}
main.cpp
int main()
{
Motor* m1 = new Motor(3);
Car *c1 = new Car;
c1 -> setMotor(m1); // <--- doesnt work "converation error"
c1 -> move();
}
Используя приведенный ниже код, я получаю сообщение «error: недопустимый разговор с« Motor * »на« int »[-fpermissive]"
, если я набираю "c1 -> setMotor (* m1), тогда я получаю «я двигаюсь без мотора», поэтому в основном вызывается оператор else.
Ожидаемый результат должен быть «BrumBrumBrum», потому что у автомобиля должно быть 3PS после того, как я назначумотор с 3PS к нему.