首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

基于list实现的stack的拷贝构造函数如何来实现

2012-02-11 
基于list实现的stack的拷贝构造函数怎么来实现? //list申明templateclassELEMclasslist{...//省略,一般

基于list实现的stack的拷贝构造函数怎么来实现?

//list申明
template   <class   ELEM>
class   list{
        ...                         //省略,一般的list
};

//stack申明
template   <class   ELEM>
class   stack{
        private:
                list <ELEM>   memory;                             //存储体
        public:
                stack(const   stack <ELEM> &);             //拷贝构造函数
                void   push(ELEM   elem);                       //压栈
                void   pop();                                           //出栈
                ELEM   top();                                           //返回栈顶元素
        ...                 //其他省略
};

//实现拷贝构造函数
template   <class   ELEM>
stack <ELEM> ::stack(const   stack <ELEM> &   source){

          //这里怎么实现阿,stack只是提供了push()   pop()   top()这些外部接口
          //没有提供用于遍历整个stack的外部接口,怎么做到把source的所有元素
          //都copy过来??

}

//大哥们给点指教阿,谢!


[解决办法]
stack不是有默认的拷贝构造函数和赋值运算符嘛。
[解决办法]
template < class ELEM >
stack <ELEM> ::stack(const stack <ELEM> & source)
: memory(source.memory)
{
}

用 list 的 copy constructor 不行吗?

template < class ELEM >
stack <ELEM> ::stack(const stack <ELEM> & source)
{
memory = source.memory;
}

用个比较差的方案。

热点排行