C++练习车辆程序问题 - 初学者编程
C++ Practice Vehicle Program Issues - Beginner Programming
我已经做了我的项目本质上基于的一小部分 - 除了更大。我很难理解这个特定的概念。我需要创建一个继承车辆类的汽车类,然后必须有单独的类,例如窗户、门、发动机等......我需要通过 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 个Windows
的Vehicle
。
这应该同样适用于车门、发动机等。
Wheel
tires[4] 不会创建任何 Wheel 对象,而只是一个数组。这就是为什么访问它不会给你任何东西。
你需要有一个汽车构造器,在那里你创造了汽车的车轮。
此外,打印是车辆中的虚拟纯函数,因此您需要在某个地方实现它。可以有 print() {};或头文件中的类似文件。
或者你可以用它来测试/调试。
我假设你有工作的构造函数。请尝试以下操作:
car1->tires[0]->inflate(10);
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- C++错误消息*成员参考.**初学者*
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 嵌套for循环C++的问题(初学者)
- 模板元编程:如何将参数包组合成新的参数包
- Qt Q串行端口未编程设备未关闭
- 我是 C++ 的初学者,我想知道如何在 2D 矢量中获取重复值
- 模板元编程 - 尝试实现维度分析
- 我是编程新手
- 初学者如何使用标准::any_of?
- C++编程从外部文本文件定义数组大小
- 了解算法的性能差异(如果以不同的编程语言实现)
- 使用 Gtkmm 以编程方式选择 Gtk::TextView 中的文本
- 模板编程初学者问题
- 代码块上的编译器标志出现问题.编程初学者
- 使用并行阵列的初学者编程学生
- C++练习车辆程序问题 - 初学者编程
- 你会如何解释一个外行人或编程初学者,面向对象方法的大胆点 - 安全
- 面向初学者的c++非阻塞编程
- 初学者尝试通过游戏编程学习继承