コンストラクター H を呼び出そうとしていますが、何らかの理由で呼び出されていません。コードをコンパイルしてもエラーは発生せず、次の出力が得られます。
初期化されたオブジェクト。
H オブジェクトが初期化されました。
H が適切に初期化されていれば、コンストラクターからの cout も表示されます。
誰か助けてくれませんか?ありがとうございました。
また、別の質問があります。hVec[i].a の値を変更し、aArray[i].a の値をこの値にも適用するにはどうすればよいですか? ポインターを使用することになっていることはわかっていますが、非常に混乱しています。質問ばかりで申し訳ありません。私はC++でのプログラミングに比較的慣れていません。
#include <vector>
#include <iostream>
struct A
{
A(int av):a(av){}
int a;
};
struct Heap
{
Heap(std::vector<A> hVal)
{
std::cout << "Constructor for H object. \n";
for (int i=0; i<hVal.size(); ++i)
{
hVec.push_back(hVal[i]);
std::cout << "hVec[i].a = " << hVec[i].a << " ";
}
std::cout << std::endl;
}
std::vector<A> hVec;
};
int main()
{
A a0(2), a1(4), a2(8);
std::vector<A> aArray;
aArray.push_back(a0);
aArray.push_back(a1);
aArray.push_back(a2);
std::cout << "A object initialized. \n";
Heap h(A);
std::cout << "H object initialized. \n";
return 0;
}