构造函数在 main 中调用,但对象未正确创建
constructor called in main, but object not created properly
我正在尝试调用构造函数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;
}
您的struct Heap
没有将A
作为参数的构造函数。
但是,您可以使用std::vector<A>
类型的数组初始化 h
Heap h(aArray);
在C++中,除非你试图与C兼容,否则只需使用class
而不是struct
Heap h(A);
这将声明一个名为 h
的 Heap(A)
类型函数。 也许你的意思是:
Heap h(aArray);
这将声明一个名为 h
的 Heap
类型的局部变量。
使用 Heap h(aArray);
而不是 Heap h(A);
该行Heap h(A);
声明一个函数h
将类型为 A
的对象作为参数,并返回一个对象Heap
。
相关文章:
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 具有包含其他对象的类的对象创建顺序
- 为什么我们再次从结构对象创建结构变量?
- 将对象创建为全局/静态对象会崩溃,而本地对象不会崩溃
- 如何创建一个对象创建函数,该函数将由与其关联的名称调用?
- 如何为自定义模板对象创建专门的函数模板
- 对象创建错误的C++矢量
- 如何为Python Swigged C++对象创建和分配回调函数
- 在 C++ 中为 C 样式对象创建一个透明包装类
- 此类模板的对象创建如何工作?
- C++ 中的对象创建类型有什么区别?
- 未知大小的数组作为类成员,用于在运行时(对象创建时间)创建数组的对象
- 如何仅通过父类对象限制对象创建
- 在正确性或良好的代码结构方面,这种动态对象创建看起来如何
- 无法将类对象创建为另一个类的成员
- 如何从现有基类对象创建派生类对象
- 在 DTor 之前删除的静态对象创建的线程?
- C++:定义多个构造函数时的对象创建/销毁序列
- 从对象创建矢量包装器,该对象只允许使用索引访问向量
- 是否可以为CPP中的对象创建一组指针