天天看點

Irrlicht3d程式設計的兩個常見錯誤解決

 錯誤一:5 I v2 U3 b/ x$ M6 F$ q3 A

/ Q2 O8 R( P# e

error C2259: 'MyEventReceiver' : cannot instantiate abstract class                       

" D' r$ Y" j2 m, g4 Rdue to following members:               

  z; X+ r, `" _% n" S% y* a      'bool irr::IEventReceiver::OnEvent(const irr::SEvent )' : is abstract               

3 @; `. J6 p  D( {: V$ x: y% V' e v

: D. w- q! S# G- M! b0 g原因是在按照Irrlicht的教程做時,由一個地方教程裡有問題,有問題的地方标注如下紅色:

: F; k' v. i" K5 v- Z( o( _* i$ z2 n$ X5 N

class MyEventReceiver : public IEventReceiver

, a0 d7 p* W) J{: y2 g/ c. d; s: F: R, U' r9 `' ?

public:) d' u5 q) E  O ~9 b

    virtual bool OnEvent(SEvent event)

5 o/ O1 K N. U0 p  b    {

: ^( ]% h$ C- V1 c        if (event.EventType == EET_GUI_EVENT)

5 C3 ]* n5 }; |- u1 _+ ]6 g* t        {5 W- I0 n* ?7 T8 F, p2 ]* D

            s32 id = event.GUIEvent.Caller->getID();

0 z- W) ~" Z; W  r            IGUIEnvironment* env = device->getGUIEnvironment();4 g. M9 H$ z8 k

9 k1 w' R2 x7 G1 B                                                                                    8 v# F: Y+ R' ~; N- X

應該改為    virtual bool OnEvent(const SEvent event)                    

: u2 ?9 n8 v- v  h                                                                                  , A  ?+ l) o6 Y+ c( r: S4 `

就能解決這個錯誤了~

6 {- k- q: w; o: t) a- ]* l7 }% Q

( h. P) b8 c$ O6 l- S錯誤二:

2 _: z* U) M, r* G; I! b( t  x8 r/ H' J+ V

! c5 |) L9 p- H$ /1 B3 T$ y  y

; J# D* L0 r% ~, Z5 P如果出現這個錯誤,将‘Irrlicht.dll’檔案拷到目前工程的檔案中。再編譯連結一次,就ok了~