lez*_*lon 4 c++ constructor default-constructor
我有以下课程:
class Tileset { //base class
public:
static std::vector<Tileset*> list;
virtual ~Tileset() = 0;
protected:
std::vector<Tile> tiles_list;
sf::Texture sheet;
private: //non copiable
Tileset(const Tileset&);
Tileset& operator=(const Tileset&);
};
Run Code Online (Sandbox Code Playgroud)
哪里sf::Texture
有默认构造函数
根据我的理解,应该生成默认构造函数,因为每个成员也可以默认构造.但是当我尝试构造派生对象而不调用Tileset
构造函数时,我遇到了编译器错误.有人可以解释为什么没有生成默认构造函数?
编辑:忘了提到Tile
该类没有默认构造函数.我不确定这是否会改变任何事情
Jar*_*Par 10
如果满足以下任何条件,则不会生成默认构造函数
const
或引用字段您声明了构造函数,因此C++不会提供默认生成的构造函数.在这种情况下,虽然所有字段Tileset
都有有用的默认构造函数,因此在这里定义默认构造函数非常容易
Tileset() { }
Run Code Online (Sandbox Code Playgroud)