我正在编写一个项目及其用于汽车批次和即时创建课程。我需要满足某些要求。对于附件描述,我需要使用指向字符串的指针,该字符串可用于动态分配具有确切数量的附件的字符串数组。每个元素都将保存附件的名称。
如果附件数为0,则无需分配空间,将指针设置为空。
还指向一个double的指针,它可以用来动态分配一个双精度数组,其元素数量与附件相同。每个元素将保持相关附件的成本,也就是说,元素0中的成本是元素0中附件的成本。 如果附件数为零,则将指针设置为null,因为不需要分配空间。
到目前为止,我的班级没有最后两个要求。我很难过。
#ifndef VEHICLE_H
#define VEHICLE_H
class Vehicle
{
public:
Vehicle();
protected:
int vin_number;
string manufacturer;
string model;
string color;
double basecost;
int accessories;
string accessory_list;
private:
};
#endif // VEHICLE_H
请帮助它是一个在线课程,我一直在谷歌搜索和阅读几个小时。
答案 0 :(得分:1)
您不应动态分配string
的数组。
如果您决定使用C ++,则应该使用STL和集合。像这样:
std::list<std::string> accessory_list;
如果您决定使用C,动态分配的字符串列表可能如下所示:
//init
int accessory_count = 0;
int accessory_cap = 20;
char** accessory_list = calloc (sizeof(char*), accessorry_cap);
//add:
if (accessory_count==accessory_cap) {
accessory_cap += 20;
accessory_list = realloc (accessory_list, sizeof(char*)* accessorry_cap);
}
accessory_list[accessory_count++] = new_accessory.
如果你真的需要一个动态的字符串数组,你可以这样做:
int accessory_arr_cap = 20;
string* accessory_arr = new string[accessory_arr_cap];
但由于在这种情况下不存在realloc,如果需要放大,则必须将整个数组复制到新数组中。
答案 1 :(得分:0)
如果选项的成本和名称相关,请将它们放在结构中:
struct Option
{
char* Name;
double price;
}
比你正在寻找的是一个集合,也许是std::vector<Option>
。我会留给你google std :: vector,这是一个很好的学习练习。
另外,您是否必须使用C ++?您可能会发现另一种语言,如C#,或者Java更容易学习编程。
如果您不能使用矢量,请自行制作。我不会发布代码,因为我觉得这是一个任务,但这是他们通常的工作方式: