C++练习车辆程序问题 - 初学者编程

C++ Practice Vehicle Program Issues - Beginner Programming

本文关键字:初学者 编程 问题 程序 练习 C++      更新时间:2023-10-16

我已经做了我的项目本质上基于的一小部分 - 除了更大。我很难理解这个特定的概念。我需要创建一个继承车辆类的汽车类,然后必须有单独的类,例如窗户、门、发动机等......我需要通过 car 类访问这些类来调整其"属性"

#include <iostream>
using namespace std;
class Vehicle
{
    virtual void print() = 0;
};
class Car : public Vehicle
{
    virtual void print();
    Wheel tires[4];
};
class Wheel
{
public:
    int pressure = 0;
    int inflate(int psi)
    {
        pressure = pressure + psi;
    }
};
int main()
{
//What would I have to put here or anywhere else to increase the pressure of a car object's FIRST     tire's pressure - Car car1; car1.tires[0].inflate(10); (this doesn't seem to work)
}

#include <iostream>
#include <vector>
using namespace std;

class Vehicle
{
    virtual void print() = 0;
};
class Car : public Vehicle
{
    virtual void print();
    Car(Wheel wheel[4])
    {
    }
};
class Wheel
{
public:
    int pressure = 0;
    int inflate(int psi)
    {
        pressure = pressure + psi;
    }
};
int main()
{
    Car car1(Wheel wheel[4]);
    //I still don't know what I could add here that would inflate the first tire
}

它不起作用的原因是类中的默认访问是私有的(与结构相反,它是公共的)。跟

class Vehicle
{
public:
    virtual void print() = 0;
};
// Note that class Wheel has to be defined before class Car, or
// the compiler will complain that class Wheel is unknown here.
class Car : public Vehicle
{
public:
   virtual void print();
   Wheel tires[4];
};

应该可以写

int main() {
  Car c;
  c.tires[0].inflate(10);
}

拥有公共数据成员是否是一个好主意是另一个问题(这不是一个好主意)。

这行得通吗?

class Window
{
 //...
};
class Car
: public Vehicle
{
  std::vector<Windows> car_windows(5);
};

这表明Car是包含 5 个WindowsVehicle

这应该同样适用于车门、发动机等。

Wheel

tires[4] 不会创建任何 Wheel 对象,而只是一个数组。这就是为什么访问它不会给你任何东西。

你需要有一个汽车构造器,在那里你创造了汽车的车轮。

此外,打印是车辆中的虚拟纯函数,因此您需要在某个地方实现它。可以有 print() {};或头文件中的类似文件。

或者你可以用它来测试/调试。

我假设你有工作的构造函数。请尝试以下操作:

car1->tires[0]->inflate(10);