半路学徒。英文不过关,看不明白。。。。。。。。。。。
希望对和我一样的小伙伴有帮助.
要解决问题 :报错:
In file included from C:\Users\Administrator\Desktop\Yuchen_EPD.ino:5:
C:\Users\Administrator\Desktop\Yuchen_EPD\EPD_Model.h:8:45: error: cannot declare variable 'display' to be of abstract type 'EPD2_BW<EPD2_290_T94, 296>'
EPD2_BW<EPD2_290_T94, EPD2_290_T94::HEIGHT> display(EPD2_290_T94(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029T94 128x296, SSD1680
^~~~~~~
In file included from C:\Users\Administrator\Desktop\Yuchen_EPD.ino:4:
C:\Users\Administrator\Desktop\Yuchen_EPD\EPD2_BW.h:29:7: note: because the following virtual functions are pure within 'EPD2_BW<EPD2_290_T94, 296>':
class EPD2_BW : public EPD2_GFX_BASE_CLASS
^~~~~~~
In file included from C:\Users\Administrator\Desktop\Yuchen_EPD\EPD2_BW.h:4,
from C:\Users\Administrator\Desktop\Yuchen_EPD.ino:4:
c:\Users\Administrator\Documents\Arduino\libraries\Adafruit_GFX_Library/Adafruit_GFX.h:32:16: note: 'virtual void Adafruit_GFX::drawPixel(int16_t, int16_t, uint16_t)'
virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
^~~~~~~~~
exit status 1
Compilation error: cannot declare variable 'display' to be of abstract type 'EPD2_BW<EPD2_290_T94, 296>'
解决过程百度搜索:
1.基类,父类,超类是指被继承的类,
2. 派生类,子类是指继承于基类的类.
基类是抽象的原因是这个纯虚函数:
virtual btScalar addSingleResult(
btManifoldPoint& cp,
const btCollisionObjectWrapper* colObj0Wrap,
int partId0,
int index0,
const btCollisionObjectWrapper* colObj1Wrap,
int partId1,
int index1) = 0;
派生类 DisablePairCollision
尝试定义该函数,但它没有正确执行:
virtual btScalar addSingleResult(
btManifoldPoint& cp,
const btCollisionObject* colObj0,
int32_t partId0,
int32_t index0,
const btCollisionObject* colObj1,
int32_t partId1,
int32_t index1);
如您所见,一些参数具有不同的类型。例如。 colObj0
是 const btCollisionObject*
类型,但它应该是 const btCollisionObjectWrapper*
类型。
因此,派生类定义了一个不同参数的新函数,但没有定义基类的纯虚函数,因此派生类仍然是抽象的。
您需要使用与基类中完全相同的参数类型来定义函数。
解决方法:
在派生类中将纯虚函数加个函数体。
纯虚函数: virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
加入函数体: void drawPixel(int16_t x, int16_t y, uint16_t color)
{
}
纯虚函数也可以叫抽象函数,一般来说它只有函数名、参数和返回值类型,不需要函数体。
纯虚函数是一种特殊的虚函数,它的一般格式如下(C++格式):
class <类名>
{
virtual <类型><函数名>(<参数表>)=0;
…
};
在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。