Ada*_*hip 4 c++ iterator reinterpret-cast
我有一个东西的迭代器.如果我想将当前项转换为指向该项的指针,为什么这样做:
thing_pointer = &(*it);
Run Code Online (Sandbox Code Playgroud)
但这不是:
thing_pointer = reinterpret_cast<Thing*>(it);
Run Code Online (Sandbox Code Playgroud)
这是我想要理解的编译器错误:http://msdn.microsoft.com/en-us/library/sy5tsf8z(v = vs.90).aspx
以防万一,迭代器的类型是 std::_Vector_iterator<std::_Vector_val<Thing,std::allocator<Thing> > >
j_r*_*ker 11
在
&(*it);
Run Code Online (Sandbox Code Playgroud)
在*被超载做你的意思逻辑:迭代器类型转换到其指向的对象.然后,您可以安全地获取此对象的地址.
而在
reinterpret_cast<Thing*>(it);
Run Code Online (Sandbox Code Playgroud)
您告诉编译器将it对象重新解释为指针.但它可能根本不是一个指针 - 它可能是一个50字节的结构,对于你所知道的一切!在这种情况下,它的第一个sizeof (Thing*)字节绝对不会指向任何合理的东西.
提示:reinterpret_cast<>几乎总是错的.
| 归档时间: |
|
| 查看次数: |
1134 次 |
| 最近记录: |