C++对象引用/访问
C++ object referencing/accessing
好的,所以我有一个GroupDB类(Group Databse),嵌套在里面的是一个Group类。Group类包含两个私有变量,其中包含组的名称和组的成员。每次用户创建一个新组时,都会创建一个组对象,并将其添加到我的GroupDB类中的组对象向量中。我正在开发一个功能,让用户加入一个特定的组。。。
我正在尝试遍历Group对象的这个向量,并访问每个对象,直到找到正确的组,然后我想将用户添加到组成员的正确组向量中
这是相关代码:
void GroupDB::JoinGroup(string n, string t) {
for (vector<Group>::iterator i = groupList.begin();
i != groupList.end(); ++i)
{
Group g = *i;
string x = g.GetName();
if (x == t)
i.Join(n, t);
}
}
我正在努力理解迭代器是如何工作的
我相信Group g = *i; string x = g.GetName();
是正确的,但我如何为groupList中的group对象实际调用Join()
函数
这也是我的课堂标题:
class GroupDB {
public:
void JoinGroup(string, string);
private:
class Group
{
public:
string GetName();
vector<string> GetMembers();
void Join(string, string);
Group(string);
private:
string name;
vector<string> members;
};
private:
vector<Group> groupList;
};
您可以通过以下几种方式来实现这一点。
您可以取消引用迭代器来访问对象(在检查名称之前不需要复制它):
{
string x = i->GetName(); // The same as (*i).GetName()
if (x == t)
i->Join(n, t); // The same as (*i).Join(n, t)
}
或者你可以使用一个参考变量,在不复制的情况下为向量中的对象引入一个新名称:
{
Group& g = *i;
string x = g.GetName();
if (x == t)
g.Join(n, t);
}
在这一行i.Join(n, t);
中,您实际上试图调用vector<Group>::iterator
对象的函数Join()
。要获得所需的行为,必须首先取消对迭代器的引用,这样才能调用Group
对象的函数。这就是它应该看起来像(*i).Join(n, t);
的样子。请注意,*i.Join(n, t);
不起作用。
相关文章:
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 使用迭代器时如何访问对象在向量中的位置?
- 无法通过指针访问对象的成员
- 如何从传递到对象的对象内部访问对象的类属性?
- 有没有办法在C++中循环访问对象的不同数据成员
- 如何访问对象动态数组中的私有成员变量?
- c++ 循环访问对象列表并删除对象
- 我们可以有一个 setter 成员函数作为从 const 对象引用的 const 吗?
- C++对象引用返回不同的值
- 对象引用中的字段以不同的方法返回不同的值
- 循环访问对象列表 c++
- 通过向构造函数其他对象引用页面来创建对象
- 访问对象的取消引用值的语法
- 如何访问对象的成员变量的取消引用值
- 在由引用对象传递中访问由引用对象传递的变量
- 错误 CS0120:访问非静态成员"相机操作员.反转鼠标Y(浮点)"需要对象引用
- 当子对象引用被分配给父对象指针时,为什么不能访问子类
- C++对象引用/访问
- 从线程访问对象(使用引用或指针)
- 如何访问通过引用传递给operator= function的对象的私有数据?