我的班级Cjt_Trets
中有一张地图,其中包含一个名为rasgo
的字符串和一个名为Trets
的类。在Trets中,我有一个set<int> id;
,其中包含id
个包含rasgo
的人。当我尝试将函数接收的id
插入到该集合中时,我的问题出现了。我该怎么办呢?
这里我留下部分代码,可以帮助您了解我的情况:
Cjt_Trets类的私人:
private:
map<string, Trets> mtrets;
};
Private of Trets:
private:
set<int> id;
string gen;
};
代码的实际部分我不知道该怎么做:
void Cjt_Trets::afegir_tret(int id, string rasgo){
mtrets.insert( make_pair<string, Trets> (rasgo, Trets.id.insert(id)) );
}
答案 0 :(得分:0)
由于你有一个班级Trets
,你不能Trets.id
,因为id是班级的非静态成员,即使它是,你也可以通过致电Trets::id
来访问它。但是,要在std::map<string, Trets>
中插入内容,您需要Trets
和std::set::insert
的对象,std::pair<iterator, bool>
返回Trets
,因此您需要创建或从某个地方接收std::map
的实际对象,以便能够将其插入overflow
。
答案 1 :(得分:-1)
我认为这样的事情应该有效:
void Cjt_Trets::afegir_tret(int id, string rasgo){
auto it = mtrets.find(rasgo) ; // is rasgo already ion the map?
if (it == mtrets.end()) // if not insert an empty Trets
it = mtrets.insert(make_pair(rasgo, Trets()).first ;
// Now insert the id in the Trets referring to this rasgo
// TODO it->second is of type Trets and id is private member
// this needs to be fixed
it->second.id.insert(id) ;
}