我試圖通過id
屬性實現2類之間的關係。 teamId
在SoccerTeams
類中必須與managing_directors
類中的董事的directorId
相同,以便指定總經理給足球隊。遍歷矢量中的對象的數據成員
這兩個類別分別具有矢量teams
和man_dirs
。
class SoccerTeams {
string teamName;
int teamId;
friend class managing_directors;
public:
//teams vector
vector<SoccerTeams> teams;
void addTeam(string name, int id) {
SoccerTeams newTeam(name, id);
teams.push_back(newTeam);
};
SoccerTeams(){};
SoccerTeams(string teamName, int id){
teamName = teamName;
teamId = id;
};
~SoccerTeams(){};
};
//managing directors of a soccer team
class managing_directors : public SoccerTeams, public people {
int directorId;
public:
//man_dirs vector
vector<managing_directors> man_dirs;
managing_directors(int num_of_managers, int avg_age);
managing_directors(){};
~managing_directors(){};
void addDirector(string name, char sex, int age, int id) {
managing_directors newDirector;
newDirector.name = name;
newDirector.sex = sex;
newDirector.age = age;
newDirector.directorId = id;
man_dirs.push_back(newDirector);
};
我試着做一個函數來檢查如下的manage_directors類中的團隊ID。
int idChecker(int id) {
for (vector<SoccerTeams>::const_iterator i = teams.begin(); i != teams.end(); ++i) {
if(i -> teamId == id)
return 1;
}
return 0;
}
但功能總是返回0,我相信這是因爲它沒有檢查在主函數創建團隊矢量相同的情況下,因爲當我試圖打印內部managing_directors
類此teams
載體,它是空的。是否有可能使teams
載體成爲全球性的? 這是解決這個問題的正確方法嗎?人類的
定義在managing_directors
繼承(以防萬一)
class people {
string name;
char sex;
int age;
bool under_auth;
int auth_level;
friend class managing_directors;
public:
people(){};
~people(){};
virtual int get_age(){ return this->age; };
};
UPDATE:
我固定循環作爲一個答案給定的,但我不認爲是問題,因爲函數仍然返回0.我嘗試使用cout來嘗試打印所有的id,並且在輸出中沒有任何內容,它是空的。
我做了這樣的事情
int idChecker(int id) {
for (vector<SoccerTeams>::const_iterator i = teams.begin(); i != teams.end(); ++i) {
cout << i - > teamId << endl; //test code
if(i -> teamId == id)
return 1;
}
return 0;
}
使用'.cbegin()'和'.cend()'爲'const_iterators'。(C++ 11) – nitronoid
董事總經理爲什麼從足球隊繼承? – Mike
在您的更新中:可能是您沒有正確填充矢量的標誌,因爲給出您之前提供的信息,建議是正確的。你需要顯示那個代碼。但更普遍的是,提供一個[mcve]並在你的問題中具體。不要反覆出現一些信息,讓人們爲你解決一個又一個的問題。 – Peter