无法从 SFML 实现纯虚函数
Can't implement pure virtual function from SFML
SFML定义了这个虚函数:
class SFML_GRAPHICS_API Drawable
{
public: virtual ~Drawable() {}
protected:
friend class RenderTarget;
virtual void draw(RenderTarget& target, RenderStates states) const = 0;
};
在我关于surface.hpp
的代码中,我创建了以下类:
class surface : public sf::Drawable
{
friend class vertex;
public:
surface(sf::Vector2f p1, sf::Vector2f p2, sf::Vector2f p3, sf::Vector2f p4);
~surface();
vertex& operator[](int i);
private:
void draw(sf::RenderTarget& target, sf::RenderStates states);
};
在surface.cpp
中,我提供了draw
的实现:
void surface::draw(sf::RenderTarget& target, sf::RenderStates states){
// ...
}
但是当我运行代码并尝试从main.cpp
surface mySurface(/* ... */);
时,出现错误:
SFML/Graphics/Drawable.hpp:69:18: Unimplemented pure virtual method 'draw' in 'surface'
我几乎 100% 确定我实现了它的正确,那么为什么 clang 不让我编译呢?我还试图在surface.hpp
surface
的定义中定义draw
,但没有任何帮助......
我几乎 100% 确定我实现了它的正确
还好你说"差不多"。
virtual void draw(RenderTarget& target, RenderStates states) const = 0;
^^^^^
const
是函数签名的一部分!它也必须出现在您的实现中:
class surface : public sf::Drawable
{
// ...
void draw(sf::RenderTarget& target, sf::RenderStates states) const;
^^^^^
};
相关文章:
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 分段 排序函数实现中的错误
- 无法去函数实现 vim
- C++ 20 中的运算符 == 和 <=> 应该作为成员还是自由函数实现?
- 为什么在这种情况下不调用我的虚拟函数实现?
- 我能否通过将函数实现为类对象方法来避免使用互斥锁
- 嵌套的模板结构构造函数实现
- C++接口的工厂函数实现
- 链表中的递归长度函数实现
- 我可以期望某些 STL 函数实现是可自动矢量化的吗?
- 如何将深拷贝构造函数实现到链表中?
- 虚拟 CTOR 的克隆函数实现是否有问题
- 没有捕获列表的 lambda 通常作为普通函数实现吗?
- C++二叉树打印函数实现
- C++:默认构造函数实现
- C++派生类中的纯虚函数实现
- 决定放置函数实现的位置
- 强制实施纯虚函数实现,可能使用不同的参数类型
- 如何让成员函数实现依赖于类的模板参数?
- 我们如何将Ostream函数作为类的成员函数实现,而不是作为朋友函数,以便我可以用作虚拟函数