cjog
为什么会连接错误
代码如下:
#include <stdio.h>
class abstract
{
public:
virtual pvf() =0 ;
};
class base
{
public:
virtual put();
};
class derived : public abstract ,public base
{
public:
pvf();
put();
};
base :: put()
{
printf("base/n" );
}
derived :: pvf()
{
printf("overridded/n");
}
main()
{
derived u;
u.pvf();
u.put();
}
在vc++上编译没问题,但连接时
Linking...
main.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall derived::put(void)" (?put@derived@@UAEHXZ)
Debug/main.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
请问这是什么原因?
[[i] 本帖最后由 cjog 于 2008-2-17 14:03 编辑 [/i]]
levinee
[quote]原帖由 [i]cjog[/i] 于 2008-2-17 13:57 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7969643&ptid=1053579][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
代码如下:
#include
class abstract
{
public:
virtual pvf() =0 ;
};
class base
{
public:
virtual put();
};
class derived : public abstract ,public base
... [/quote]
你在派生类中声明了put(),这样会覆盖了基类中的定义。但put()却没在派生类中定义,链接时当然出错。这就像只声明函数,没有定义就去调用。
[[i] 本帖最后由 levinee 于 2008-2-17 22:58 编辑 [/i]]
bloblo
好贴啊 不错啊 谢谢楼主分享 拉 (*^__^*) 嘻嘻……
------------------------------------------------------------------------------
昨天做[url=http://www.118cy.net/company/]主机空间[/url]客服时候给客人投诉我回答慢,居然扣了50元,想跳槽转行不做[url=http://www.118cy.net/host/]虚拟主机[/url]