C++ C++;错误:无法声明变量';区块';为抽象类型';AABB&x27;
我刚开始用SFML2.0编写一个简单的游戏 我创建了AABB类,继承了SFML中的两个类,以便在类draw()方法中编写。 但我一直都有这样的错误:C++ C++;错误:无法声明变量';区块';为抽象类型';AABB&x27;,c++,C++,我刚开始用SFML2.0编写一个简单的游戏 我创建了AABB类,继承了SFML中的两个类,以便在类draw()方法中编写。 但我一直都有这样的错误: \main.cpp|14|error: cannot declare variable 'block' to be of abstract type 'AABB'| 代码: 系统类在这里并不重要,我认为:D 顺便说一句,当我从类app compile中删除继承时,没有错误。我该怎么办?请帮助我:)您的类AABB继承了sf::Drawabl
\main.cpp|14|error: cannot declare variable 'block' to be of abstract type 'AABB'|
代码:
系统类在这里并不重要,我认为:D
顺便说一句,当我从类app compile中删除继承时,没有错误。我该怎么办?请帮助我:)您的类
AABB
继承了sf::Drawable
,这是一个抽象类,AABB
不会覆盖它的所有纯虚拟函数——这是使AABB
成为一个具体类并拥有其对象所必需的。我怀疑这是打字错误造成的。你在哪里写作
virtual void draw(sf::RenderTarget& target) const ;
在AABB.h
中,它应该是
virtual void draw(sf::RenderTarget& target, sf::RenderStates) const ;
因为后者是sf::Drawable
的纯虚拟函数的签名,如中所述。当然,您还必须在AABB.cpp
中更改此函数的定义
#include "../headers/AABB.h"
using namespace std;
void AABB::draw(sf::RenderTarget& target) const
{
target.draw(m_sprite);
}
virtual void draw(sf::RenderTarget& target) const ;
virtual void draw(sf::RenderTarget& target, sf::RenderStates) const ;