0

我试图调用构造函数 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;

}
4

3 回答 3

2

struct Heap没有A作为参数的构造函数。

std::vector<A>但是,您可以使用类型为 aArray 来初始化 h

Heap h(aArray);

在 C++ 中,除非您试图与 C 兼容,否则只需使用class而不是struct

于 2012-11-24T03:17:19.490 回答
2
Heap h(A);

这声明了一个Heap(A)名为的函数h。也许你的意思是:

Heap h(aArray);

Heap这声明了一个名为的局部变量h

于 2012-11-24T03:18:16.840 回答
0

使用Heap h(aArray);而不是Heap h(A);

该行Heap h(A);声明了一个h以类型对象A为参数的函数,并返回一个对象Heap

于 2012-11-24T03:20:06.267 回答