list对象作为类的私有成员时分配内存

来源:互联网 发布:淘宝换货可要申请退款 编辑:程序博客网 时间:2024/05/09 05:54

今天在做国外题目时,碰到了一个问题,就是LVList类的私有成员中包含list对象,如果直接声明对象,不分配内存的话,后面对其访问就会报错。

最开始时,我是这样声明的:

template<typename K,typename V,int N>class KVList{public:KVList();size_t size() const;  //return number of key-valueconst K& key(int i) const;  //return unmodifiable reference to the keyconst V& value(int i) const;  //return modifiable reference to the valueKVList &add(const K&,const V&);   //add  a new element to the listint find(const K& k) const;       //return the indexKVList &replace(int i,const K&k,const V&v);  //replaceprivate:list<pair<K,V>> myList;size_t num;};

然后我再想对其初始化时,一直报错:

template<typename K,typename V,int N>KVList<K,V,N>::KVList():myList(new list<pair<K,V>>(N)){num=0;}


以前也碰到类似的问题,是vector,一直没解决,今天查了好多资料,终于搞定了,只需将list对象声明为指针形式就可以了:

template<typename K,typename V,int N>class KVList{public:KVList();size_t size() const;  //return number of key-valueconst K& key(int i) const;  //return unmodifiable reference to the keyconst V& value(int i) const;  //return modifiable reference to the valueKVList &add(const K&,const V&);   //add  a new element to the listint find(const K& k) const;       //return the indexKVList &replace(int i,const K&k,const V&v);  //replaceprivate:list<pair<K,V>> *myList;size_t num;};


0 0
原创粉丝点击