C++ - Error: 'list' does not name a type (list object as member variable in class)

Joe picture Joe · Feb 7, 2014 · Viewed 21.9k times · Source

I have been running into the "'xxx' does not name a type" error a lot and most posts I've read before have mentioned that this error occurs with some dependency issues. However, I can't seem to find mine. Here's what I got:

GameLib.h

#ifndef GAMELIB_H_
#define GAMELIB_H_

//Structures
struct player_t {
    std::string name;
    int MMR;
};

//Prototypes
void* queueUpPlayer(void*);
int randomMMR();
std::string randomName();

#endif /* GAMELIB_H_ */

PlayerGroup.h

#ifndef GROUP_H_
#define GROUP_H_

class playerGroup {
private:
    std::list<player_t> players;
    std::list<player_t>::iterator it;
    const int totalSize = 10;

public:
    //Constructor
    playerGroup();

    //Destructor
    ~playerGroup();

    //Add
    void add(const player_t p);

    ....
};

#endif /* GROUP_H_ */

PlayerGroup.cpp

#include <iostream>
#include <cstdlib>
#include <string>
#include <cmath>
#include <list>

#include "GameLib.h"
#include "playerGroup.h"

using namespace std;

playerGroup::playerGroup() {}

playerGroup::~playerGroup() {}

void playerGroup::add(const player_t p) {
    if(players.size() >= totalSize) exit(1);
    players.push_back(p);
}

.....

I'm recieving this error on both the lists member variables in the PlayerGroup class:

..\src\PlayerGroup.h:13:2: error: 'list' in namespace 'std' does not name a type
..\src\PlayerGroup.h:14:2: error: 'list' in namespace 'std' does not name a type

Thanks for all the help in advance!

Answer

Alex Johnson picture Alex Johnson · Feb 7, 2014

I believe you need to #include <list> in your PlayerGroup.h file because it is used in that file.