作成したクラスのオブジェクトのベクトルがあり、各オブジェクトには 4 つの変数 (2 つの double、1 つの int、および bool) が含まれています。int は ID 番号として使用されているため、ベクター内のどのオブジェクトがどれであるかを追跡できますが、作成した別のクラスのメンバー関数は double で計算を実行し、bool (true と false) を操作します。ベクトルからの 2 つのランダム オブジェクトが互いに相互作用するように、random_shuffle を使用してベクトルを並べ替えていますが、ここで問題が発生しています。random_shuffle が動作した後、2 つの double と bool は適切に値を返します (私は思う) が、最初の ID 番号を持つオブジェクトを除くすべての ID 番号に対して、ID 番号 int が意味不明 (-858993460) として返されます。これは、コードの一般的なバージョンです。ID番号を印刷するのを手伝ってくれる人はいますか?大変感謝しております。
int main()
{
CalculationClass CalculationObject;
int vectorsize; // number of objects from class "Object" to create
vectorsize = PromptForVectorSize(); // user inputs number of objects to create
std::vector<Object> ObjectVector(vectorsize, Object() );
int iterations; // number of loops to run
iterations = PromptForIterations(); // user inputs number of loops
for(int z = 0; z<ObjectVector.size(); z++) // gives signed/unsigned warning
{ // Gives each object an ID number //
CalculationObject.EstablishIDNumbers(ObjectVector[z], z);
}
for(int i = 0; i<iterations; i++)
{
cout << "=========================================" << endl;
cout << "RUN NUMBER " << i+1 << endl;
std::random_shuffle (ObjectVector.begin(), ObjectVector.end());
for(size_t x = 0; x<ObjectVector.size(); x+=2)
{
cout << ObjectVector[x].getIDNumber() << endl;
cout << ObjectVector[x].getObjectDouble() << endl;
cout << ObjectVector[x+1].getIDNumber() << endl;
cout << ObjectVector[x+1].getObjectDouble() << endl;
CalculationObject.Function(ObjectVector[x], ObjectVector[x+1]);
cout << ObjectVector[x].getIDNumber() << endl;
cout << ObjectVector[x].getObjectDouble() << endl;
cout << ObjectVector[x+1].getIDNumber() << endl;
cout << ObjectVector[x+1].getObjectDouble() << endl;
cout << "=========================================" << endl;
}
}
return 0;
}