如何解决未定义的引用错误消息 [英] how to solve undefined reference error message
问题描述
我在这段代码中有一个非常讨厌的问题
Hi, I have a very annoying problem in this code
class Drawable
{
public :
virtual void draw() = 0;
virtual ~Drawable() = 0;
};
class MyDrawable : public Drawable
{
public :
virtual void draw();
MyDrawable();
virtual ~MyDrawable();
private :
int * data;
};
MyDrawable::~MyDrawable()
{
delete data;
}
void MyDrawable::draw()
{
}
MyDrawable::MyDrawable()
{
data = new int;
}
void del(Drawable* drawable)
{
delete drawable;
}
int main()
{
del(new MyDrawable());
}
错误信息是:
第18行:对Drawable ::〜Drawable()的未定义引用
第28行:对Drawable的未定义引用::〜Drawable()
你能帮帮我PLZ吗?
谢谢,Samuel。
the error messages are :
line 18 : Undefined reference to Drawable::~Drawable()
line 28 : Undefined reference to Drawable::~Drawable()
Could you help me plz ?
thanks, Samuel.
推荐答案
class Drawable
{
public :
virtual void draw() = 0;
virtual ~Drawable() {};
};
class MyDrawable : public Drawable
{
public :
virtual void draw();
MyDrawable();
virtual ~MyDrawable();
private :
int * data;
};
MyDrawable::~MyDrawable()
{
delete data;
}
void MyDrawable::draw()
{
}
MyDrawable::MyDrawable()
{
data = new int;
}
void del(Drawable* drawable)
{
delete drawable;
}
int main()
{
del(new MyDrawable());
}
为什么?
http://stackoverflow.com/questions/270917/why-should-i-declare-a-virtual-destructor-for-an-abstract-class-in-c [ ^ ]
http://accu.org /index.php/journals/233 [ ^ ]
回复评论的更多信息:
http://stackoverflow.com/questions/3336499/virtual- desctructor-on-pure-abstract-base-class [ ^ ]
您还可以:
Why?
http://stackoverflow.com/questions/270917/why-should-i-declare-a-virtual-destructor-for-an-abstract-class-in-c[^]
http://accu.org/index.php/journals/233[^]
A little more info in response to comments:
http://stackoverflow.com/questions/3336499/virtual-desctructor-on-pure-abstract-base-class[^]
You could also have:
class Drawable
{
public :
virtual void draw() = 0;
virtual ~Drawable() = 0;
};
Drawable::~Drawable()
{
}
见这里:
https://msdn.microsoft.com/en-us/library/hy3y5wee.aspx [ ^ ]
http://eli.thegreenplace。 net / 2010/11/13 / pure-virtual-destructors-in-c [ ^ ]
这篇关于如何解决未定义的引用错误消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!