Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;错误:无法声明变量';区块';为抽象类型';AABB&x27;_C++ - Fatal编程技术网

C++ C++;错误:无法声明变量';区块';为抽象类型';AABB&x27;

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

我刚开始用SFML2.0编写一个简单的游戏

我创建了AABB类,继承了SFML中的两个类,以便在类draw()方法中编写。 但我一直都有这样的错误:

\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 ;