使用指针访问彼此的类

时间:2014-03-11 22:13:38

标签: c++ class pointers

我仍然对指针感到困惑,也许你可以稍微启发我。

我有一些课程指向对方,并且没有以正确的方式获得访问它们的方法。

#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.我做错了什么?

2 个答案:

答案 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
}