我是C ++的新手,并且在访问我的矢量元素时遇到了一些问题。它是A类中myStruct指针的向量:
struct myStruct{
int val;
string name;
}myStruct;
Class A{
...
vector<myStruct*> vec;
B create()const;
}
Class B{
...
string Name(); //return name of current struct
vector<myStruct*>::iterator beginning;
int offset; //offset from the beginning
}
A类有一个方法create()const
,其中创建了B类的对象。它应该像某种迭代器一样工作,通过具有某些属性的vec
的一部分。方法Name()
应该从name
返回myStruct
vec[offset]
在A.create()
我创建Class B
的新对象,按vec
选择lower_bound()
的迭代部分的开头,并将其放入new_object.beginning
。
当我想实现B.Name()
时,我只能通过移动迭代器vec
并取消引用它来访问beginning
中的结构元素。什么是正确的命令形式,可以做我想要的 - 正确地解除引用迭代器beginning
?
我的IDE中的完成导致我*( *(beginning + offset))->name
,但它显示错误Pointer type is required
答案 0 :(得分:0)
命令的正确形式是什么,可以做我想要的 - 取消引用正确的迭代器?
beginning
的类型为vector<myStruct*>::iterator
beginning + offset
的类型也是vector<myStruct*>::iterator
*(beginning + offset)
的类型为myStruct*
要访问myStruct
元素的名称成员,您需要使用(*(beginning + offset))->name
您可以使用临时代码更轻松地理解代码。
myStruct* elementPtr = *(beginning + offset);
elementPtr->name;