C++ 在另一个类中创建类的实例时出现问题

C++ 在另一个类中创建类的实例时出现问题,c++,instantiation,private-members,C++,Instantiation,Private Members,我有一门课叫Heap。我试图在一个名为Graph的类中将Heap的实例作为私有成员,但这似乎不起作用 class Heap{ private: Node* container; int size; //... some more attrs ... public: Heap(int inSize){ size = inSize //... initialize other private attrs ... } cla

我有一门课叫Heap。我试图在一个名为Graph的类中将Heap的实例作为私有成员,但这似乎不起作用

class Heap{
  private:
    Node* container;
    int size; 
    //... some more attrs ...
  public: 
    Heap(int inSize){
      size = inSize
      //... initialize other private attrs ...
    }

class Graph {
   private: 
     int size; 
     Heap h(90); 
   public: 
     Graph(int inSize){
       size = inSize;
     }
看了这篇文章之后,我仍然不明白为什么不允许在类图中初始化Heap。我的猜测是私有成员不能被初始化,它们只是占位符,所以没有物理内存给它们。这篇文章中的一条评论指出,拥有指针不是一个好的做法

因此,我的问题是: 1.为什么这不是一个好的做法?如果这确实不是一个好的做法。 2.为什么我不能从另一个类的私有属性中实例化另一个类对象。 3.除了指针之外,还有别的方法解决这个问题吗? 4.而且,如果我没有自定义的ctor,而只是使用默认的ctor,那么它也可以工作,同样,我也不知道为什么

我试图在一个名为Graph的类中将Heap的实例作为私有成员,但这似乎不起作用

您使用了错误的语法

Heap h(90);
不是有效的语法。使用:

Heap h;
使用构造函数初始化它

 Graph(int inSize) : size(inSize), h(90) { } // Or the appropriate size.

在构造器中使用成员初始值设定项列表。你能详细说明为什么这不起作用吗?因为
Heap h(90)
的语法完全错误。