1. ホーム
  2. c++

[解決済み] C++による動的オブジェクトの配列の作成

2022-03-04 23:59:51

質問

動的なオブジェクトの配列を作成する方法を知っています。

例えば、クラス名がStockの場合。

Stock *stockArray[4];
for(int i = 0 ; i < 4;i++)
{
   stockArray[i] = new Stock();
}

これを動的なオブジェクトの配列に変更するにはどうすればよいのでしょうか?

試してみたこと

在庫 stockArrayPointer = new Stock stock[4]です。

これはうまくいかず、"The value of Stock** cannot be used to initalize an entity of type Stockというエラーが表示されます。

2つ目の質問は、動的オブジェクトの動的配列を作成した後、配列内のポインタにアクセスする構文は何ですか。

ここで、stockArray[i] = new Stock(); とすると、どのように変化しますか?

これについてのガイダンスが必要です...

どのように解決するのですか?

もし、あなたがc++を使っているならば、車輪を再発明する必要はありません。 ベクター :

#include <vector>

std::vector< std::vector< Stock > > StockVector;

// do this as many times as you wish
StockVector.push_back( std::vector< Stock >() );

// Now you are adding a stock to the i-th stockarray
StockVector[i].push_back( Stock() );

編集する

もし、ヒープ上に配置された配列の配列を持ちたいだけなら、この方法を使うだけです。

Stock** StockArrayArray = new Stock*[n]; // where n is number of arrays to create
for( int  i = 0; i < n; ++i )
{
    StockArrayArray[i] = new Stock[25];
}

// for freeing
for( int i = 0; i < n; ++i )
{
    delete[] StockArrayArray[i];
}
delete[] StockArrayArray;