<分区>
我正在尝试创建一个图 block 系统,它创建图 block 的单个实例,并将该图 block 添加到图 block 数组中,从而允许您调用 Tile::s_tileList[1]
来得到土 block 。
但是,我遇到了一些问题。这是完整的磁贴代码:
瓷砖.h
#pragma once
class Tile {
public:
static const Tile s_tileList[128]
static const Tile s_dirt;
Tile(int tileId);
virtual ~Tile();
protected:
private:
int m_tileId;
};
瓷砖.cpp
#include "tile.h"
#include "tile_dirt.h"
const Tile Tile::s_dirt = TileDirt(1); // This line errors
Tile::Tile(int tileId) {
s_tileList[tileId] = *this;
m_tileId = tileId;
}
Tile::~Tile() {
}
tile_dirt.h
#pragma once
#include "tile.h"
class TileDirt : Tile {
public:
TileDirt(int tileId);
virtual ~TileDirt();
protected:
private:
};
当我尝试将 s_dirt
分配给 TileDirt
时,出现以下错误:
conversion to inaccessible base class "Tile" is not allowed
我在这里做错了什么?
我试过:
static const Tile* s_dirt;
然后像这样赋值:
const Tile* Tile::s_dirt = new TileDirt(1);
但这只会增加另一个错误:不存在合适的构造函数来将“const Tile *”转换为“Tile”