C++编程错误记录
1、error C2039: “data”: 不是“std::vector<_Ty>”的成员
std::vector<unsigned char> rawData; rawData.resize(size); in.read(reinterpret_cast<char*>(rawData.data()),size);
Visual C++ 2008, which doesn't support c++11
std::vector
is guaranteed to store its data contiguously, so you can just take the address of its first element:
char *data = reinterpret_cast<char*>(rawData.empty() ? NULL : &rawData[0]);
note: 预设置std::vector的 size,std::vector大小改变,重新分配内存,首地址可能改变。
2、 error C2440: “初始化”: 无法从“std::_Tree<_Traits>::const_iterator”转换为“std::_Tree<_Traits>::iterator”
BoneNameBoneMap(const BoneSet& bones)
{ for(BoneSet::iterator bone = bones.begin(); bone != bones.end(); ++bone)
{ insert(StringBonePair((*bone)->getName(), *bone)); } }
begin()有两个函数 iterator begin(); const_iterator begin() const;
因为传入的参数为const,所以调用的是第二个函数,返回的是const_iterator,而不是iterator。
note:在可能的情况下,尽量多使用const版本。