Если у TileMap нет аргументов в конструкторе, проблем нет, но я добавил три аргумента, и WorldMapState автоматически пытается создать объект с пустым конструктором. Почему C ++ работает таким образом?
Поскольку вашему конструктору TileMap
нужно 3 параметра. Они не являются обязательными. Либо добавьте еще один конструктор к TileMap
, который не принимает аргументов:
public:
TileMap();
TileMap(unsigned int width, unsigned int height, unsigned int tileSize);
Или использовать значения по умолчанию для существующего конструктора:
public:
TileMap(unsigned int width = 0, unsigned int height = 0, unsigned int tileSize = 0);
Или правильно инициализируйте _tilemap
, используя 3 параметра, используя либо встроенную инициализацию:
private:
// ...
TileMap _tilemap{0, 0, 0};
Или используя список инициализатора конструктора в определении конструктора в файле cpp:
WorldMapState::WorldMapState(GameDataRef data)
: _tilemap(0, 0, 0)
{
// ...
}
Передайте значения, которые подходят для вашего случая, конечно.