Я пытаюсь запустить очередь для отслеживания хода игроков. В очереди может быть 8 игроков, поэтому в очереди должно быть 8 игроков. Я продолжаю получать ошибку LNK2005 "public:_thiscall Player::Player(void)" (??0Player@@QAE@XZ) already defined in Main.obj
, а также LNK1169 one or more multiply defined symbols found
. Единственный ответ, который я нашел в Интернете, был попытаться сделать мои геттеры встроенными, но это не помогло. Я также пытался создать 4 разных объекта Player без цикла и добавлять их по отдельности, но это тоже ничего не исправило. Первоначально класс Player был классом шаблона, но я изменил его, потому что я не думал, что он должен быть одним, и у меня возникала другая ошибка, когда это было. Надеюсь, кто-нибудь может подсказать мне, что я делаю неправильно. Хотя очередь является шаблоном, потому что я хотел иметь возможность хранить что-либо в своей очереди. Итак, сначала я инициализировал очередь.
//initialize players turn in queue
Queue<Player> playerQueue(NUM_PLAYERS);
//track players added
int playerNum = 1;
//keep looping until we reached
//the number of players
while (playerNum <= NUM_PLAYERS) {
//create new object
Player newPlayer;
//add to queue
playerQueue.add(newPlayer);
//increment player count
playerNum++;
}
Мой класс игрока на данный момент довольно прост. Получатели закомментированы, потому что в данный момент они встроены в заголовочный файл. Прочтите, что это может решить мою проблему. Это не так.
#include <iostream>
#include "player.h"
#include "queue.h"
using namespace std;
Player::Player() {
pName = "Outis";
queuePos = 0;
propSize = 0;
currency = 0;
}
//Getters
/*int Player::getCurrency() {
return currency;
}
int Player::getQueuePos() {
return queuePos;
}*/
Это мой заголовочный файл
class Player {
public:
Player();
//Getters
inline int getCurrency() { return currency; }
inline int getQueuePos() { return queuePos; }
//vector<Properties> getProperties();
private:
//players name
std::string pName;
//when it is their turn
int queuePos;
//size of property vector
int propSize;
//vector to store properties
//vector<Properties> propList;
//amount of currency
int currency;
};
Это функция добавления в моем шаблоне класса Queue
// Add value to rear
template<class T>
void Queue<T>::add(const T &val)
{
if (numStored == capacity)
{
cerr << "Queue full: cannot add element" << endl;
return;
}
// add to rear
int rearIndex = (frontIndex + numStored) % capacity;
elements[rearIndex] = val;
numStored++;
}