Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;练习车辆程序问题-初学者编程_C++_Virtual Functions - Fatal编程技术网

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

C++ C++;练习车辆程序问题-初学者编程,c++,virtual-functions,C++,Virtual Functions,我已经把我的项目基本上是基于什么做了一个小片段-除了更大的。我很难理解这个特殊的概念。我需要创建一个继承vehicle类的car类,然后必须有单独的类,如window、door、engine等。。。我需要通过car类访问这些类,以调整其“属性” #包括 使用名称空间std; 等级车辆 { 虚空打印()=0; }; 车辆类别:公共车辆 { 虚拟空打印(); 车轮轮胎[4]; }; 班轮 { 公众: 内压=0; 内部充气(内部磅/平方英寸) { 压力=压力+磅/平方英寸; } }; int main

我已经把我的项目基本上是基于什么做了一个小片段-除了更大的。我很难理解这个特殊的概念。我需要创建一个继承vehicle类的car类,然后必须有单独的类,如window、door、engine等。。。我需要通过car类访问这些类,以调整其“属性”

#包括
使用名称空间std;
等级车辆
{
虚空打印()=0;
};
车辆类别:公共车辆
{
虚拟空打印();
车轮轮胎[4];
};
班轮
{
公众:
内压=0;
内部充气(内部磅/平方英寸)
{
压力=压力+磅/平方英寸;
}
};
int main()
{
//我需要在这里或其他任何地方放置什么来增加汽车对象第一个轮胎的压力-汽车1;汽车1.轮胎[0]。充气(10);(这似乎不起作用)
}

#包括
#包括
使用名称空间std;
等级车辆
{
虚空打印()=0;
};
车辆类别:公共车辆
{
虚拟空打印();
汽车(车轮[4])
{
}
};
班轮
{
公众:
内压=0;
内部充气(内部磅/平方英寸)
{
压力=压力+磅/平方英寸;
}
};
int main()
{
小车1(车轮[4]);
//我仍然不知道我可以在这里添加什么来给第一个轮胎充气
}
这样行吗

class Window
{
 //...
};

class Car
: public Vehicle
{
  std::vector<Windows> car_windows(5);
};
类窗口
{
//...
};
班车
:公共车辆
{
标准::矢量车窗(5);
};
这表明
车辆
是一辆
车辆
,包含5个
窗口


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

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

你需要有一个汽车构造师,在那里你可以创建汽车的轮子

此外,打印在车辆中是一个虚拟的纯功能,所以您需要在某处实现它。可以有print(){};或者在头文件中添加类似内容


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

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

应该可以写

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

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

我假设您有工作的构造函数。 请尝试以下方法:

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

你不明白我此刻有多感激。。。多谢各位much@Sallar:承认答案为“答案”的正确方式是接受它。您在登录时跳过了接受的建议,因此您可能没有意识到这一点。
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);
}
car1->tires[0]->inflate(10);