delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/03/06/10:45:51

From: Vic <tudor AT cam DOT org>
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
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019