3

当社の製品にはいくつかの色があるため、構造体の一部としてリストを使用しようとしています。これは私ができることですか、それとも配列を使用する必要がありますか?いずれにせよ、私はウェブ上で例を見つけていません。

#include "stdafx.h"
#include<iostream>  
#include<string>  
#include<sstream>  
#include<cctype> 
#include<list>

using namespace std;

////////////////////////////////////////////////////////////////////////////////////////
//  Constances
////////////////////////////////////////////////////////////////////////////////////////

#define N_PRODUCT 3

struct Brand_t {
int Model_Num;
string Product_Name;
list<string> Colors;
} brands [N_COLOR];

////////////////////////////////////////////////////////////////////////////////////////
//  Functions
////////////////////////////////////////////////////////////////////////////////////////


int main()
{
string mystr;
int n;

for (n=0; n < N_PRODUCT; n++)
{
    cout << "Enter Model Number: ";
    std::getline (cin,mystr);
    stringstream(mystr) >> brands[n].model_Num,4;
    cout << "Enter Product Name: ";
    getline(cin,classrooms[n].Product_Name);
    list<string>::iterator it;
    Students.push_back ("Red");
    Students.push_back ("Yellow");
    Students.push_back ("Blue");
}

return 0;
}
4

4 に答える 4

2

はい、これは可能です。RAIIのおかげで、listオブジェクトは構造体の存続期間に基づいて自動的に初期化および解放されます。Object Pascalなどの他のプログラミング言語ではそうではないとしても、C ++でも事実上同じであり、他の回答が指摘しているように、唯一の違いはメンバーメソッドと変数のデフォルトの可視性であることに注意してくださいstructclass

ただし、 PODS以外のオブジェクトをユニオンに入れることはできません。

Cスタイルの配列の代わりにstd::vectorまたはを使用することをお勧めします。std::array配列が動的サイズであると想定される場合は、おそらくAstd::vectorが最も役立ちます。プレーンnewまたは偶数を使用する場合malloc()、オブジェクトは自動的に解放されません(で初期化されることさえありませんmalloc()

于 2012-07-03T21:25:29.600 に答える
2

はい、そうしない理由はありません。C++でのastructとaの唯一の違いはclass

A)structメンバーはデフォルトで公開されており、

B)struct継承はデフォルトでパブリックです(つまり、がどこにあるかとstruct A : B同等です。)class A : public BBclass

于 2012-07-03T21:25:30.380 に答える
1

オブジェクトがデフォルトのコンストラクターを持っているかサポートしている限り、構造体内でリストまたは任意のオブジェクトを使用することは完全に許容されます。

構造体変数が最初に宣言されるときに、それも初期化されるため、デフォルトのコンストラクターが必要です。その中のオブジェクトも、デフォルトのコンストラクターを呼び出すことによって初期化されます。

于 2012-07-03T21:24:50.987 に答える
1

クラスのインスタンスをC++の構造体のメンバーとして持つことには何の問題もありません。ただし、構造体のインスタンスをPOD(プレーンな古いデータ)オブジェクトとして扱うC++に依存している場合を除きます。(ビット単位のコピーなどと同様です。

于 2012-07-03T21:26:22.887 に答える