【问题标题】:How to create objects inside another class? [closed]如何在另一个类中创建对象? [关闭]
【发布时间】:2016-09-15 14:13:04
【问题描述】:

我有这个代码。

#include "Stack.h"

template <class dataType>
class Queue2{

public:
    Queue2(int size);

    bool push(int data);
    bool pop(int &data);

    bool isEmpty();
    bool isFull();

    bool top(int &data);

    ~Queue2();
};

template <class dataType>
Queue2<dataType>::Queue2(int size = 10) : Stack <dataType> obj1(size), Stack <dataType> obj2(size) {//here i am facing an error. how can i fix it

}

我有一个模板类 Stack 和这样的构造函数。

Stack(int size=10);

现在我想在 Queue2 类中创建 Stack 类的两个对象。

【问题讨论】:

  • 两个对象是什么意思?两个成员变量?
  • 推送和弹出提示您的 Queue2 有一个内部列表。是否要向其中添加 obj1 和 obj2?
  • 我必须借助两个堆栈对象来实现队列。这就是为什么我需要两个对象作为数据成员..
  • 你应该先尝试学习一些基本的c++。 Stackoverflow 不是 C++ 教程。
  • 应该是……: obj1(size), obj2(size) {}.

标签: c++ class templates


【解决方案1】:

如果你给你的Queue2类两个私有的Stack成员,你可以在构造函数初始化中初始化它们,并单独访问它们:

class Queue2{
    Stack<dataType> left,right;
public:
    Queue2(int size);
    /* ... */

然后将构造函数定义为:

template<typename dataType>
Queue2<dataType>::Queue2(int size = 10)
  : left(size), right(size) {}

【讨论】:

  • 我可以创建两个不继承的堆栈对象吗?
  • @UsmanKabir 这是什么意思?
  • 根据此代码,当我创建 Queue2 类的对象时,左对象和右对象的大小将默认为 10。我想要的是 Stack &lt;dataType&gt; left(size); Stack &lt;dataType&gt; right(size);
  • 如果您使用初始化列表,则不会。
  • 感谢@Actorclavilis 酷
猜你喜欢
  • 1970-01-01
  • 2014-07-23
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多