我在我的頭文件中的下列減速VC++矢量迭代器初始化
// 3D Vector
typedef struct tagV3D /*: V2D*/ {
union {
struct {
double x;
double y;
double z;
};
struct {
struct tagV2D v2d_;
};
};
} V3D, TVec3D, *PVec3D;
現在我有我的cpp文件中的方法
bool InsertSelfIntersectionVertexes(vector<PVec3D> &avtxlst) {
PVec3D vtx;
int iI;
...
vtx = new TVec3D;
*vtx = v;
PVec3D* p= avtxlst.begin() + iI + 1;
avtxlst.insert(p, vtx);
...
}
我得到以下嘗試編譯代碼中的錯誤
error C2440: 'initializing' : cannot convert from 'std::_Vector_iterator<_Ty,_Alloc>' to 'PVec3D *'
and
error C2664: 'std::_Vector_iterator<_Ty,_Alloc> std::vector<_Ty>::insert(std::_Vector_const_iterator<_Ty,_Alloc>,const _Ty &)' : cannot convert parameter 1 from 'PVec3D' to 'std::_Vector_const_iterator<_Ty,_Alloc>'
我該如何解決這個問題?
下面的代碼工作正常與VC6,當遷移到VS 2008出現了錯誤。
這是爲什麼?
欣賞任何答案
爲什麼* PVec3D不是PVec3D,那就是沒有明星? – 2012-01-13 10:16:22