我是否正确地向地图添加了几个值?
cout << "Size: " << ((map <BYTE,ifunct*>)FuncBytes[sign]).size() << endl;
((map <BYTE,ifunct*>)FuncBytes[sign]).insert(pair<byte,ifunct*>(n,changMethod));
cout << "Size: " << ((map <BYTE,ifunct*>)FuncBytes[sign]).size() << endl;
和以前一样,插入后 size() 返回零。也就是值\u200b\u200bare没有加?
您的显式类型转换
(map <BYTE,ifunct*>)创建了一个临时对象 typemap <BYTE,ifunct*>。每个这样的转换都会创建一个单独的临时对象,该对象会在表达式结束时自动销毁。你做的所有动作,都是用这些临时对象做的。对这些临时对象之一也添加了一个元素,当然,它也随之消失得无影无踪。该对象
FuncBytes[sign]不受您的操作的影响。一个更好地理解显式类型转换会发生什么的示例:
结论: