c++ - 在 main 中调用构造函数,但未正确创建对象

标签 c++ constructor output

我正在尝试调用构造函数 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/

相关文章:

elasticsearch - 是否可以在logstash中为索引设置自定义映射,但在elasticsearch中不能设置索引?

C++不正确的浮点运算

c++ - 多重继承的虚函数表

java - 最适合边界检查的地方——构造函数还是设置函数?

c# - 构造函数未被调用

java - 如果用户使用键盘输入错误,如何再次调用该类

c++ - 动态字符串数组分配错误

c++ - 使用 C++ 读取大文件的 SSD

javascript - 是否可以将构造函数作为类中的方法?

mysql - SSIS MySQL ADO.net SQL 任务输入和输出