我在CCArmatureDataManager.cpp 253行查看此代码。 RelativeData是一个struct.Here,将一个堆栈参数放入一个map中。为什么,没问题?有人向我解释这个吗? THX !!!
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();
}
}
答案 0 :(得分:1)
在表达式
中_relativeDatas[configFilePath] = RelativeData()
RelativeData()
部分创建一个临时的默认构造对象。
_relativeDatas[configFilePath]
部分调用std::map::operator[]
,将引用返回给对象。
赋值将从临时对象复制到引用[]
运算符返回的对象。换句话说,RelativeData
copy assignment operator被调用(如果您没有,编译器将为您创建一个)。
如果没有带有键configFilePath
的元素,那么地图将默认构造一个,并返回对它的引用。
所以你的代码所做的是创建两个类型为RelativeData
的默认构造对象,并将内容从一个复制到另一个。这可能不是那么友好的话,几乎没用。
答案 1 :(得分:0)
看起来该函数只是添加一个空结构(如果不存在)_relativeDatas映射(最看似std :: map&lt; std :: String configFile,struct RelativeData&gt;),然后可以填充数据