我写了这样一个程序: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型(不太严谨但是这个意思)的类的对象
2 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
PdOp是vector<Parsed_Operator>类型的指针,所以PdOp[i]是vector<Parsed_Operator>类型,并不是Parsed_Operator类型。程序修改如下:
vector<Parsed_Operator>* PdOp = &Pd_OpStr.PdOp[PieceOrder]; cout << (*PdOp)[i].OpID; |
30秒到达战场
TA贡献1828条经验 获得超6个赞
PdOp指向vector类型,PdOp[i]相当于*(PdOp+i),它和*PdOp应该是同一个类型,所以是vector类型。
另外PdOp也不是一个数组的首地址,所以正确用法:
(*PdOp)[i].OpID
括号是必须的,下标操作符比解引用的优先级高。
这个表达式的理解是:取出指针PdOp指向的vector对象的第i个元素的OpID成员
- 2 回答
- 0 关注
- 253 浏览
添加回答
举报
0/150
提交
取消