有没有办法在c ++中获取地图或列表,以保持旧条目的多次调用而不被定义为静态? 我正在使用多地图,问题是如果它是静态的,它只返回第一个条目,否则我最终得到一个空地图。
here's the code :
typedef struct mystruct_1 {
std::string _name;
int _nb_ev;
int _nb_oc;
std::list<mystruct_2> _ev;
mystruct_1() {}
} mystruct_1_t;
typedef struct mystruct_2 {
int _id;
int _nbs;
char **_t;
mystruct_2() {}
} mystruct_2_t;
myclass::method_1(){
static std::map<std::string,mystruct_1> _Pat;
static std::multimap<std::string,mystruct_2> map_occ;
switch( myswitch ) {
case _P_1 :
{
while( condition_1 ){
mystruct_1 *p = new mystruct_1();
_Pat.insert ( std::pair<std::string ,mystruct_1>(p->_name,*p) );
}
}
break;
case _P_2 :
{
std::string name;
while( condition_2 ){
mystruct_2 *line=new mystruct_2();
map_occ.insert ( std::pair<std::string ,mystruct_2>(name,*line) );
}
break;
case _P_3 :
{
// here I need to get what was stored
myclass::method_2();
}
break;
default :
// something else ;
}
}
myclass::method_2(){
//uses what was stored in the map and in the multimap
}
答案 0 :(得分:1)
你似乎已经创造了某种“C with classes”怪物。
这些静态变量应该是您的类的成员,例如:
class foo
{
public:
std::string m_String; // Not defined globally or at file scope!
};
这样,每当你为同一个foo实例更改m_String时,它都会保持其状态。