From: Vic Newsgroups: comp.os.msdos.djgpp Subject: HELP: C++ virtual problems Date: Fri, 06 Mar 1998 10:38:46 +0200 Organization: Communications Accessibles Montreal, Quebec Canada Lines: 66 Message-ID: <34FFB616.699E@cam.org> NNTP-Posting-Host: dialup-604.hip.cam.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk I'm making this GUI in C++. I declared a base class, XbaseWidget that contains virtual functions like MouseUp, mouseDown etc. Each other class is derived from this one (like the buttons, dsktop etc) It all compiles without any warnings (I use -c -Wall -O ) but when I want to link it, I get "undefined reference to XbaseWidget virtual table". What is this? I don't have much experience in C++ and I really don't have any ideea what is going on. this is an example of the class declarations (full sources are available if this would help) :::::::::::: class XbaseWidget //base class { //all other objects derive from this one public: int x,y,w,h; XbaseWidget(){}; //constructor / destructor virtual ~XbaseWidget(){}; virtual void MouseOver(); //general event handlers virtual void MouseOut(); virtual void MouseUp(); virtual void MouseDown(); virtual void MouseDrag(); virtual void KeyDown(char); virtual void KeyUp(); virtual int WantsKeyFocus(); virtual void Draw(BITMAP*); //drawing and updating virtual void Update(); virtual int InRange(int mx,int my); }; class XtextButton :public XbaseWidget //a text button { private: void (*action)(); //the function char *text; //the caption int up; //raised or sunk public: XtextButton(int tx,int ty, int tw,int th,char *txt,void (*fnc)()); virtual ~XtextButton(); virtual void MouseOver(); //general event handlers virtual void MouseOut(); //these are all functions virtual void MouseUp(); // in the button.cc file virtual void MouseDown(); virtual void Draw(BITMAP*); virtual int WantsKeyFocus(){return 0;}; virtual int InRange(int mx,int my) {if(mx>=x && mx<=x+w && my>=y && my<=y+h) return 1; else return 0;}; void MouseDrag(){}; //dummy handlers void KeyDown(char){}; //not used in a button void KeyUp(){}; void Update(){}; }; TIA, -- --> http://www.cam.org/~tudor <--