2015-09-19 32 views
-2

我有地图 map < double, multimap < int, class * >> N;地图<双,多重映射<INT,类*> =列表<class * > * L

typedef list <class *> classList; 
classList *L; 

我希望class *map <double, multimap < int, class*>>去进入名单L;

map < double, multimap < int, class* > :: iterator Mit; 
multimap < int, class* > :: iterator mmit; 

for (Mit = N.begin(); Mit != N.end(); Mit++) { 
    for (mmit = Mit->second.begin(); mmit != Mit->second.end(); mmit++){ 
//HERE 
}} 

这将编译并运行。但是我无法将这两个class *设置成相等。 我得到的编译错误:

L.insert(mmit->second); 
error: no matching function for call to 'std::list<Class *> :: insert (Class*&)' 

如果我把L.insert(mmit->second);其中//这里是我得到这个编译错误。

error: no matching function for call to 'std::list<Class *> :: insert (Class*&) 
+0

您需要显示您的完整源代码,以便能够尝试编译。 –

+1

@FrancisCugler不是_full code_,而是[MCVE]。 –

+0

@πάνταῥεῖ真;和适当的格式以方便阅读。 –

回答

1

没有std::list::insert重载,只有一个参数。将元素添加到列表中的最简单方法是push_backpush_front

L->push_back(mmit->second); 

注意:你的问题说:L是一个指针,所以我在这里使用指针引用。

+0

当我使用'L-> push_back(mmit-> second);'程序会编译,但它不会正确加载列表,因为我得到了seg-fault –

+0

@SimpleJack:L'真的是一个指针吗?你用'new'来分配内存并构建它指向的对象吗?说实话,我会声明'L'作为一个对象'classlist L;'并使用'L.pushback(...);'。我通常在大多数情况下避免动态分配。 – Blastfurnace

+0

当然,我的意思是'L.push_back(...);'在以前的评论中,但我是一个可怕的打字员,编辑已经太迟了。 – Blastfurnace

相关问题