【发布时间】:2014-03-13 01:07:14
【问题描述】:
我尝试读入一些球队和球员的数据并更改数据。 Player 类成员具有来自 Team 类的指向球队的指针,而 Teams 有一个充满球员指针的球员列表。
问题来自 readin() 函数,该函数从 txt.file 读取球队和球员数据并返回球队向量。在 readin-process 之后,readin-process 中创建的指针似乎指向错误的地址。
因此,从 read-in 函数返回的 team 向量中读取数据与从 read-in 函数中创建的指针中读取数据不同。
这是类的一般结构:
#include <iostream>
#include <vector>
#include <string>
class Player;
class Team
{
public:
std::vector<Player*> getplayerlist(){
return playerlist;
}
void setteamname(std::string x){
teamname = x;
}
std::string getteamname(){
return teamname;
}
void Team::addPlayer(Player* x){
playerlist.emplace_back(x);
};
private:
std::vector<Player*> playerlist;
std::string teamname;
};
class Player
{
public:
Team* getpteam(){
return pteam;
}
void setpteam(Team* x){
pteam = x;
}
void setinformation(std::string x, int y){
name= x;
id = y;
}
private:
int id;
std::string name;
Team* pteam;
};
这里是读入函数的结构
vector<Team> readin(){
//some readin stuff
//if the line contains the teamname
Team team;
team.setteamID_(a);
team.setteamname_(word2);
Teamvector.emplace_back(team);
//if the line contains player data
//add the player to the team created before
Player* player = new Player();
player->setinformation_(b, word1, lname, str, &Teamvector[a-1]);
Teamvector[a-1].addPlayer(player);
return Teamvector;
}
但是如果我比较&Teamvektor[0]和
vector <Team> team = readin();
&team[0]
它们是不同的。我怎样才能“保留”已存储团队的地址?
【问题讨论】:
标签: c++ pointers vector stl pass-by-value