【发布时间】:2021-01-09 16:54:33
【问题描述】:
我正在尝试创建一个函数,该函数接受参数为 sf::Shape 对象(为了只接受圆形、矩形等) 但由于它是一个抽象类,它会抛出错误“不允许使用抽象类类型 sf::Shape 的参数”
这是我的函数的签名:
GraphObject::GraphObject(sf::Shape shape, int z = 0)
还有其他方法可以将形状作为参数传递吗?谢谢
【问题讨论】:
我正在尝试创建一个函数,该函数接受参数为 sf::Shape 对象(为了只接受圆形、矩形等) 但由于它是一个抽象类,它会抛出错误“不允许使用抽象类类型 sf::Shape 的参数”
这是我的函数的签名:
GraphObject::GraphObject(sf::Shape shape, int z = 0)
还有其他方法可以将形状作为参数传递吗?谢谢
【问题讨论】:
接受shape 作为引用或指针:
GraphObject::GraphObject(sf::Shape& shape, int z = 0) 或 GraphObject::GraphObject(sf::Shape* shape, int z = 0)。
推理是不言自明的。您不能拥有抽象类类型的对象 - 好吧,因为它们是 abstract。
【讨论】: