好的,这是我在这个网站上的第一个问题,而且我对C ++很新。我正在尝试创建一系列功能,将各种校园俱乐部的成员放入各自的俱乐部。我得到了这个类骨架,但是我不确定如何定义三个构造函数,特别是如何使用参数内部的变量。除了构造函数之外,您几乎可以忽略所有公共函数。有什么想法吗?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Club
{
public:
Club();
Club(Club &c);
Club(string cname);
void addMember(string name);
void removeMember(string name);
const string getClubName();
void loadClub();
const bool isMember(string name);
const string getAllMembers();
friend Club mergeClubs(Club& c1, Club& c2);
~Club();
private:
string *members;
int numMembers;
string clubName;
};
答案 0 :(得分:1)
您有三个构造函数:默认Club()
,复制构造函数Club(Club &c)
和第三个Club(string cname)
。
默认情况下,您必须决定私人会员的所有默认值。
对于复制构造函数,您需要做的就是将&c
中的所有内容复制到您自己的记录中。例如,您可以这样做:
numMembers = c.numMembers ;
对于第三个,你必须决定cname
是什么以及你应该怎么做。
对于复制构造函数,您确实需要做出一个棘手的决定。复制string * members;
意味着什么你可能认为你可以说members= c.members ;
但是如果原来的Club
被调整大小,那么副本将指向无效的内存。
答案 1 :(得分:0)
不使用字符串数组,只需使用向量,那么您也不需要“numMembers”。
class Club
{
public:
...
void addMember(string name) { members.push_back(name); }
void removeMemeber(string name) { members.erase(std::remove(members.begin(), members.end(), name), members.end()); }
...
private:
vector<string> members;
string clubName;
};