我试图调用构造函数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;
}
答案 0 :(得分:2)
您的struct Heap
没有以A
为参数的构造函数。
但是,您可以使用aArray std::vector<A>
类型
Heap h(aArray);
在C ++中,除非您尝试与C兼容,否则只需使用class
代替struct
答案 1 :(得分:2)
Heap h(A);
这声明了一个名为Heap(A)
的{{1}}类型的函数。也许你的意思是:
h
这声明了一个名为Heap h(aArray);
的{{1}}类型的局部变量。
答案 2 :(得分:0)
使用Heap h(aArray);
代替Heap h(A);
行Heap h(A);
声明函数h
将A
类型的对象作为参数,并返回一个对象Heap
。