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版本。

posted on 2017-11-24 16:34  水木颛顼  阅读(279)  评论(0编辑  收藏  举报

导航