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 -