我正在尝试调用构造函数 H,但由于某种原因它没有被调用。 编译代码时没有出现错误,并得到输出:
A object initialized.
H object initialized.
如果 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;
}
最佳答案
你的 struct Heap
没有采用 A
的构造函数作为参数。
但是,您可以使用数组 std::vector<A>
来初始化 h类型
Heap h(aArray);
在 C++ 中,除非你试图与 C 兼容,否则只需使用 class
而不是 struct
关于c++ - 在 main 中调用构造函数,但未正确创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537904/