【发布时间】:2018-03-15 13:19:16
【问题描述】:
假设我有两个级别的汽车和服务。是否可以为汽车和服务类的矢量对象(注意:我不知道是否实际上被称为矢量对象)创建元素。一旦创建了两个元素,我只想稍后调用汽车类构造函数以调用服务构造函数来获取用户信息?
如果可能的话,是否可以不必将Service构造函数更改为方法?
using namespace std; // I know this is not the best, prof wants us to use it
class Car { Car() { //Get data from user } };
class Service { Service(){ //Get data from user } };
int main () {
int num;
vector<Car> car;
vector<Service> service;
car.push_back(Car{});
service.push_back();
for (int i = 0; i < car.size(); i++)
car[i].display(i);
cout << endl << car.size() + 1 << ". exit";
cin >> num;
service[num].Service::Service();
}
【问题讨论】:
-
您在寻找
std:vector<std::optional<Service>>吗?见std::optional。 -
请描述你试图更好地解决的问题(问题描述,最小化,而不是你试图在代码中做的事情)
-
在构造对象时不要从用户那里获取输入,而是编写一个函数来询问您需要什么,然后将其传递给对象的构造函数。然后您可以返回该对象并使用它将其分配给您想要的向量元素。
-
你应该开始阅读一本 c++ 初学者书籍。什么是继承,什么是 OOP,以及虚拟方法可以为您做什么。 “稍后”调用构造函数绝对是 c++ 工作方式的错误想法。所以你应该从基础开始
-
在构造函数运行之前,您不能拥有对象。为什么不将
//Get data from user移出默认构造函数并移到函数Car getCarFromInput()和Service getServiceFromInput()中?
标签: c++ class object vector elements