我仍然对指针感到困惑,也许你可以稍微启发我。
我有一些课程指向对方,并且没有以正确的方式获得访问它们的方法。
#include <vector>
#include <iostream>
class Player;
class Trainer;
class Team {
Trainer* trainer_;
std::vector<Player*> player_;
public:
std::vector<Player*> player() { return player_; }
Trainer* trainer() { return trainer_; }
std::vector<Player*> get_playerlist(){
return player_;
};
};
class Player {
public:
void setteam_(Team* x){
team_ = x;
}
private:
Team* team_;
};
class Trainer {
Team* Team_;
};
int main()
{
Player player1;
Team team1;
std::vector<Player*> playerlist;
player1.setteam_(&team1);
playerlist = team1.get_playerlist();
std::cout << playerlist.size();
std::cin.get();
return 0;
}
主要是创建了player1并将其分配给team1的玩家列表,现在当我获得玩家列表时他应该以某种方式出现在那里。但是这段代码的输出是团队1的玩家列表的大小仍然是0.我做错了什么?
答案 0 :(得分:1)
您的Team
课程没有实际将玩家添加到player_
向量的方法。将team_
指针设置为team1
实例是不够的。
答案 1 :(得分:0)
player1.setteam_(&team1);
接下来会发生什么:
void setteam_(Team* x){
team_ = x;
}
您在此声明此Player
指向Team
的指针设置为与x
相同的地址。但这并不意味着此Team
对象具有指向std::vector
中的玩家的指针。这不是自动发生的,你需要这样的东西:
void setteam_(Team* x){
team_ = x;
x->addPlayer( this); // add to vector
}