我在CCArmatureDataManager.cpp 253行查看此代码。 RelativeData是一个结构。在这里,将堆栈参数放入映射中。为什么,没问题??有人向我解释吗?谢谢!!!
struct RelativeData
{
std::vector<std::string> plistFiles;
std::vector<std::string> armatures;
std::vector<std::string> animations;
std::vector<std::string> textures;
};
void CCArmatureDataManager::addRelativeData(const std::string& configFilePath)
{
if (_relativeDatas.find(configFilePath) == _relativeDatas.end())
{
_relativeDatas[configFilePath] = RelativeData();
}
}
最佳答案
在表达中
_relativeDatas[configFilePath] = RelativeData()
RelativeData()
部分创建一个临时的默认构造的对象。_relativeDatas[configFilePath]
部分调用std::map::operator[]
,该引用返回对对象的引用。赋值从临时对象复制到
[]
运算符返回其引用的对象。换句话说,RelativeData
copy assignment operator被调用(如果没有,编译器在大多数情况下会为您创建一个)。如果没有键
configFilePath
的元素,则映射将默认构造一个,并返回对其的引用。因此,您的代码要做的是创建两个
RelativeData
类型的默认构造的对象,并将内容从一个复制到另一个。用也许不是那么客气的话来说,它几乎是无用的。关于c++ - 在 map 上放置堆栈参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34806607/