this is my code:
LoggedUser.h
#pragma once
#include <string>
using std::string;
class LoggedUser {
private:
string m_username;
public:
LoggedUser(string username);
string getUsername() const;
bool operator==(LoggedUser loggedUser) const;
};
Room.h
#pragma once
#include <LoggedUser.h>
#include <string>
#include <vector>
using std::vector;
using std::string;
typedef struct RoomData {
unsigned int id = 0;
string name;
unsigned int maxPlayers = 4;
const unsigned int timePerPlay = 10;
bool isActive = false;
RoomData& operator=(const RoomData& roomData) {
this->id = roomData.id;
this->isActive = roomData.isActive;
this->maxPlayers = roomData.maxPlayers;
this->name = roomData.name;
return *this;
}
} RoomData;
class Room {
private:
RoomData m_metadata;
vector<LoggedUser> m_users;
public:
Room(const Room& room);
Room(RoomData roomData, LoggedUser loggedUser);
int getUserIndex(const LoggedUser& loggedUser);
void addUser(LoggedUser loggedUser);
void removeUser(LoggedUser loggedUser);
vector<LoggedUser> getAllUsers();
unsigned int getId();
string getName();
unsigned int getMaxPlayers();
bool getIsActive();
};
RoomManager.h
#pragma once
#include <map>
#include "Room.h"
class RoomManager {
private:
std::map<unsigned int, Room> m_rooms;
public:
void createRoom(LoggedUser loggedUser, RoomData roomData);
}
RoomManager.cpp
#include "RoomManager.h"
void RoomManager::createRoom(LoggedUser loggedUser, RoomData roomData)
{
m_rooms[roomData.id] = Room(roomData, loggedUser);
}
The problem is in the file RoomManager.cpp in the function createRoom i'm trying to insert to the map<unsigned int, Room>, a room by his id, but i get this error "C2512 'Room::Room': no appropriate default constructor available"
now, i know i can fix this by inserting a pointer of Room instead of the object itself, but i want to know if there is a way to do it without pointers, just so i know what was the problem in my code. Thanks for everyone who helping.