猿问

请问在C++中vector地址怎么用的呢?

我写了这样一个程序:
vector<Parsed_Operator>* PdOp ; 
PdOp = new vector<Parsed_Operator> ;
*PdOp = Pd_OpStr.PdOp[PieceOrder] ;
其中,Parsed_Operator是我之前定义的一个类,Pd_OpStr.PdOp是一个vector< vector<Parsed_Operator> >型的已知量,PieceOrder是一个int
但是,之后,PdOp[i].OpID报错,其中OpID是Parsed_Operator中的成员
希望各位帮我解释一下
显示的问题是,PdOp[i]被当做了一个vector型(不太严谨但是这个意思)的类的对象

茅侃侃
浏览 254回答 2
2回答

慕桂英3389331

PdOp是vector<Parsed_Operator>类型的指针,所以PdOp[i]是vector<Parsed_Operator>类型,并不是Parsed_Operator类型。程序修改如下:vector<Parsed_Operator>*&nbsp;PdOp&nbsp;=&nbsp;&Pd_OpStr.PdOp[PieceOrder];cout&nbsp;<<&nbsp;(*PdOp)[i].OpID;

30秒到达战场

PdOp指向vector类型,PdOp[i]相当于*(PdOp+i),它和*PdOp应该是同一个类型,所以是vector类型。另外PdOp也不是一个数组的首地址,所以正确用法:(*PdOp)[i].OpID括号是必须的,下标操作符比解引用的优先级高。这个表达式的理解是:取出指针PdOp指向的vector对象的第i个元素的OpID成员
随时随地看视频慕课网APP
我要回答