C ++:在声明期间向类对象添加值?

时间:2014-08-10 22:43:50

标签: c++ class

我疯狂地试图弄清楚这个废话。我是在大学的CS 142入门计算机编程课的最后一周,到目前为止我完全没事了。我已经理解了所有的概念,并且在作业上做得非常好,但是课程和指针都在踢我的屁股。我无法绕过它们。我一直致力于最新的家庭作业,并认为我开始理解课程很好,但是每当我尝试实施或调用信息时,我都会遇到疯狂的错误。我不知道该怎么做。任何人都可以帮助我解释事情而不会变得非常疯狂吗?

这项任务是编写一个程序,用于跟踪汽车经销商的库存情况。这位教授提供了一个名为" Car"我们将在代码中实现,以跟踪每辆汽车的品牌,颜色和价格,以及具有成员功能,允许您绘制不同颜色的汽车,并打印出当前库存的列表。问题是Car类所需的所有输入都没有用于添加数据的成员函数。我搜索过并搜索过,我发现的所有解决方案都包含了向对象添加数据的成员函数,但是我的教授包含了类(我们必须使用并禁止修改)没有这样的成员函数。所以我不知道如何将数据导入对象。这是整个Car.h和Car.cpp:

Car.h

//WARNING: It is expressly forbidden to modify any part of this document, including its name.
#pragma once
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

class Car
{
    private:
    string name;
    string color;
    double price;

public:
    /* 
     * Constructor/Destructor
     * 
     * Handles creation and deletion of Car objects.
     * 
     * Parameter: name_in
     *      The name of a new car
     * Parameter: color_in
     *      The color of a new car
     * Parameter: price_in
     *      The price of a new car
     */
    Car(string name_in, string color_in, double price_in);
    virtual ~Car();

    string getName();
    string getColor();
    double getPrice();
    void paint(string new_color);
    string toString();
};

Car.cpp

//WARNING: It is expressly forbidden to modify any part of this document, including its name
#include "Car.h"
using namespace std;

Car::Car(string name_in, string color_in, double price_in)
{
    name = name_in;
    color = color_in;
    price = price_in;
}
Car::~Car(){}
string Car::getName()
{
    return name;
}
string Car::getColor()
{
    return color;
}
double Car::getPrice()
{
    return price;
}
void Car::paint(string new_color)
{
    color = new_color;
    price += 1000;
}
string Car::toString()
{
    stringstream ss;
    ss << "Name: " << name << endl;
    ss << "Color: " << color << endl;
    ss << "Price: $" << price << endl;
    return ss.str();
}

所以我必须使用Car类为对象添加三个值 - 名称,颜色和价格,我必须将它们存储在Car对象的向量中,这样就可以有一个用户定义的长度列表。库存,我必须能够通过添加基于文本的新Car对象来编写和读取可以添加到矢量的.txt文件。就像我说的那样,我用Google搜索过的其他类似想法的实现都有成员函数允许添加对象中的数据,但我教授的代码却没有。我在第一次设置对象时不得不初始化它。显然,唯一的例外是汽车的颜色,可以使用paint(string new_color)函数进行更改。

我已经尝试了大量不同的方法在我自己的Main.cpp文件中设置一个汽车对象,使用我的大脑可以想到的这个学期在课堂上学到的东西。我试过像这样的东西     cars [0] =新车(&#34; Jalopy&#34;,&#34; Blue&#34;,2300); 要么     cars.push_back(Car(&#34; Camaro&#34;,&#34; Yellow&#34;,25000)); 我尝试过使用指针(但我真的不知道如何使用它们)和一切。和AAAAAAAUGGGHHH我被困住了!如何获取新的Car对象并在向量中设置它并使用名称,颜色和价格初始化对象,而不使用类成员函数为我添加数据?

P.S。教授的指示完全没用,并且说'#34;要求你使用提供的Car类(在Car.h和Car.cpp中找到)存储所有汽车信息。&#34;就课堂实施而言,这实际上是他给予我们的唯一帮助。请帮忙!

1 个答案:

答案 0 :(得分:0)

到目前为止你有什么?

使用原始代码:

std::vector<Car> cars;
cars.push_back(Car("Camaro", "Yellow", 25000.0d))

应该准确地告诉你你想要的东西。

要在堆栈上创建汽车,您会说:

Car& myCar = Car("GTi", "Grey", 25000.0d);