繁体   English   中英

在另一个类中创建一个类的实例时遇到问题

[英]Trouble creating a instance of a class within another class

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

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;
     }

看完这篇文章后, 如何使用构造函数在另一个类中创建对象? ,我仍然无法弄清楚为什么我不允许在类 Graph 中初始化 Heap 。 我的猜测是私有成员不能被初始化,它们只是占位符,所以没有给它们物理内存。 这篇文章中的一条评论指出,使用指针不是一个好习惯。

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

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

您使用了错误的语法。

Heap h(90);

不是有效的语法。 用:

Heap h;

使用构造函数初始化它

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM