1

私はプロジェクトを書いており、それは車のロット用で、クラスを作成しています。特定の要件を満たす必要があります。アクセサリの説明については、正確な数のアクセサリで文字列の配列を動的に割り当てるために使用できる文字列へのポインタを使用する必要があります。各要素はアクセサリの名前を保持します。

アクセサリの数が 0 の場合、スペースを割り当てる必要はありません。ポインタを null に設定します。

また、付属品と同じ数の要素を持つ double の配列を動的に割り当てるために使用できる double へのポインタもあります。各要素は関連付けられたアクセサリのコストを保持します。つまり、要素 0 のコストは要素 0 のアクセサリのコストです。アクセサリの数がゼロの場合は、スペースを割り当てる必要がないため、ポインタを null に設定します。 .

これらの最後の2つの要件がない場合、これまでの私のクラスは次のとおりです。私は困惑しています。

#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

それがオンラインコースであり、何時間もグーグルで読んでいるのを手伝ってください。

4

2 に答える 2

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];

ただし、この場合は再割り当てができないため、配列を拡大する必要がある場合は、配列全体を新しい配列にコピーする必要があります。

于 2013-05-10T05:53:55.710 に答える