gpt4 book ai didi

C++ 对象引用/访问

转载 作者:行者123 更新时间:2023-11-28 02:40:48 26 4
gpt4 key购买 nike

好的,所以我有一个 GroupDB 类(Group Databse)并且嵌套在里面我有一个 Group 类。 Group 类包含两个私有(private)变量,其中包含组的名称和组的成员。每次用户创建一个新组时,都会创建一个组对象并将其添加到我的 GroupDB 类中的组对象 vector 中。我正在开发一个让用户加入特定组的功能...

我试图遍历这个 Group 对象 vector 并访问每个对象,直到找到正确的组,然后我想将用户添加到组成员的正确组 vector 中。

相关代码如下:

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 中的组对象调用 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)
}

或者您可以使用引用变量,以便在不复制对象的情况下为 vector 中的对象引入新名称:

{
Group& g = *i;
string x = g.GetName();
if (x == t)
g.Join(n, t);
}

关于C++ 对象引用/访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com