Home > Enterprise >  Nested class returns 'undefined reference to' when accesing variables from upper class
Nested class returns 'undefined reference to' when accesing variables from upper class

Time:08-02

I am working on a card game simulator and when I access a variable from an upper class the compiler shows an "undefined reference to" error. Does any know a solution?

#include <iostream>
#include <vector>
#include <algorithm>
#include <random>


class Game{
    public:
    static std::vector<int> usableDeck;

  private:



class Player {   

    public:   
        void pickCard() {
            usableDeck.push_back(0);
        }
};

public:
   void startGame() {
    Player player;
    player.pickCard();
}
};


int main() {
  Game game{};
  game.startGame();

return 0;
}

CodePudding user response:

Nested classes don't work the way you think. In particular, from Player within Game, you cannot access a member (e.g. usableDeck) of Game without an instance of Game. To make it work, you might either pass an instance of Game to pickCard() or store a reference to Game& in Player.

CodePudding user response:

The

static vector<int> usableDeck;

is just a declaration. Initialize it outside the class definition with something like

std::vector<int> Game::usableDeck = {};

See https://godbolt.org/z/4exjv9jca

  •  Tags:  
  • c
  • Related