C++ 从不同的c类访问阵列++;

C++ 从不同的c类访问阵列++;,c++,C++,我正在为学校做一个名为LCR的骰子游戏。我最终得到了要编译的程序,并且我已经完成了游戏例程。我现在被困在从我的玩家类访问主阵列上。特别是播放器::设置芯片。我可能应该使用指针,但我在这方面非常粗糙,任何输入都可能很棒。函数调用很好,输出正常,但是我注释掉的行显然不正常,但是给出了我想要做的事情的想法。谢谢 以下是我在LCR Game.cpp中的代码: int main() { // Display Game Rules Player::directions();

我正在为学校做一个名为LCR的骰子游戏。我最终得到了要编译的程序,并且我已经完成了游戏例程。我现在被困在从我的玩家类访问主阵列上。特别是播放器::设置芯片。我可能应该使用指针,但我在这方面非常粗糙,任何输入都可能很棒。函数调用很好,输出正常,但是我注释掉的行显然不正常,但是给出了我想要做的事情的想法。谢谢

以下是我在LCR Game.cpp中的代码:

    int main()
{

    // Display Game Rules
    Player::directions();

    // Get # of Players
    int currentPlayer = 0;
    srand((unsigned)time(NULL));

    const int numPlayers = setPlayers(); //set number of players


    static Player* players = new Player[numPlayers]; //set up array 

    for (int i = 0; i < numPlayers; i++) //set names and chips for each player
    {
        cout << endl << "Enter player number " << (i + 1) << "'s name: " << endl;

        players[i].setName();
        players[i].chips = 3;

    }
    // start game

    cout << endl << "OK Let's play!" << endl;

    while (winner == false) {

        for (int i = 0; i < numPlayers; i++) {
            // check if player has chips. if not ++i and skip turn
            if (players[i].chips == 0) {
                cout << endl << "Sorry " << players[i].name << " you have no chips, you must skip this turn" << endl;
                ++i;
            }
            cout << endl << players[i].name << " You have " << players[i].chips << " chips " << " press enter to roll the dice" << endl;
            std::cin.ignore();         //wait for keypress
            for (int j = 0; j < players[i].chips || j < 3; j++) {  // player rolls dice up to 3 times or max chips

                Player::setChips();  // call setChips. roll dice & move chips 

                cout << players[i].chips;
                // check for winner after each diceroll
                totalChips = 0;                          // reset chip counter
                for (int k = 0; k < numPlayers; k++) {   //add all chips on table
                    totalChips = totalChips + players[i].chips;
                }

                // check for winner                 

                if (totalChips - players[i].chips == 0) {
                    cout << endl << "Congratulations " << players[i].name << " you win " << players[i].chips << " chips!";
                    winner = true;
                    return 0;
                }

            }
        }
    }





    return 0;
}
intmain()
{
//显示游戏规则
播放器::方向();
//获得#名球员
int currentPlayer=0;
srand((无符号)时间(NULL));
const int numPlayers=setPlayers();//设置玩家数量
静态玩家*players=新玩家[numPlayers];//设置数组
for(int i=0;i您的
setChips
功能是静态的吗

非静态成员引用必须相对于特定对象

您的错误是因为函数
setChips
是静态的,而
chips
不是静态的

如果你想让你的函数是静态的,你需要让
芯片也成为静态的。另外,在.cpp的顶部,你需要定义
未签名的播放器::芯片;
,然后你可以在
播放器
类函数中使用
++chips


如果你不需要你的函数是静态的,只需要从你的函数中删除静态的,你仍然可以在你的类函数中使用
++chips

在“Player”对象中你不需要players数组。只需要使用++chips;所以players[3]给你一个播放器,players[3]。set_chips()调用set_chips(),可以访问所有播放器[3]数据。我只尝试了++芯片,它说“非静态成员引用必须相对于特定对象。如果我尝试++播放器[1]我知道我缺少一些简单的东西,但是我对C++很陌生。谢谢。我用芯片做了静态的,使用了芯片+。像一个魅力。再一次我在想它。谢谢大家!
void Player::setChips()
{

switch (Dice::rollDice()) // roll the dice
{
case 1:

    cout << endl << "You rolled <L> "; // subtract 1 chip from player and add one to left 

    //--players[i].chips;

    //if (i = numPlayers) {
    //  ++players[1].chips;
    //  }
    break;

case 2:  
    cout << endl << "You rolled <C> "; // subtract 1 chip from player
    //--players[i].chips;
    break; 

case 3:  
    cout << endl << "You rolled <R> "; //subrtact 1 chip from player and give to right
    //--players[i].chips;
    //if (i = 1) {
    //  ++players[numPlayers].chips;

    break; 

case 4: 
    cout << endl << "You rolled <*> ";
    break; //do nothing

case 5: 
    cout << endl << "You rolled <*> ";
    break; // do nothing

case 6: 
    cout << endl << "You rolled <*> ";
    break; //do nothing
}
}