C++基类指针

jy01807853 2008-06-01 02:04:13

//书上说可以同过基类的指针调用 ,编译通过,但是为什么执行的时候会出错了
// 望大家指点
#include<iostream>
using namespace std;
class Base
{
public:
virtual int fcn();
};
class D1:public Base
{
public:
int fcn(int);
};
class D2:public D1
{
public:
int fcn(int);
int fcn();
};
int main()
{
Base bobj;
D1 d1obj;
D2 d2obj;
Base *bp1=&bobj,*bp2=&d1obj,*bp3=&d2obj;
bp1->fcn();
bp2->fcn();
bp3->fcn();
return 0;
}
///////////////////////////////////////////////////
------ 已启动生成: 项目: tre, 配置: Debug Win32 ------

正在链接...
fwe.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall Base::fcn(void)" (?fcn@Base@@UAEHXZ)
fwe.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall D2::fcn(void)" (?fcn@D2@@UAEHXZ)
E:\C++练习题\tre\Debug\tre.exe : fatal error LNK1120: 2 个无法解析的外部命令

生成日志保存在“file://e:\C++练习题\tre\Debug\BuildLog.htm”中
tre - 3 错误,0 警告


---------------------- 完成 ---------------------

生成: 0 已成功, 1 已失败, 0 已跳过



...全文
114 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouqing19871024 2008-11-15
  • 打赏
  • 举报
回复
还有类D1中根本就没有函数int fcn(),所以你根本就调用不了该函数,bp2->fcn(); 此句无效
zhouqing19871024 2008-11-15
  • 打赏
  • 举报
回复
bp1->fcn();
bp2->fcn();
bp3->fcn();
这三条语句还是不能在屏幕上显示什么啊 你应该还在每个类中增加一个输出函数来调用fcn函数呀
该输出函数体可写成这样:cout<<fcn()<<endl;这样你就可看到结果。
jy01807853 2008-06-01
  • 打赏
  • 举报
回复

//我实现了一下虚函数但是,却没有显示任何结果
//不明白,还请指点
#include<iostream>
using namespace std;
class Base
{
public:
virtual int fcn()
{return 8*8;}
};
class D1:public Base
{
public:
int fcn(int);
};
class D2:public D1
{
public:
int fcn(int);
int fcn()
{return 9*9;}
};
int main()
{
Base bobj;
D1 d1obj;
D2 d2obj;
Base *bp1=&bobj,*bp2=&d1obj,*bp3=&d2obj;
bp1->fcn();
bp2->fcn();
bp3->fcn();
system("pause");
return 0;
}

bitxinhai 2008-06-01
  • 打赏
  • 举报
回复
所有的虚函数都没有实现,
当然没有方法去解析你的函数了!!
jy01807853 2008-06-01
  • 打赏
  • 举报
回复

//C++primer上说,虽然没定义重载虚函数
//但是可以通过基类指针调用
//这是书上的列子,我没有看懂,希望
//楼下的解答

dwen20 2008-06-01
  • 打赏
  • 举报
回复
D1类中没有实现虚函数重载,而定义了一个同名不同参数的函数,链接时会导致参数匹配出错。
D2有同样类似的问题,不知道调用非直接继承关系的派生类动态绑定是怎么样的,唉,手头没有
C++ Primer,在虚函数那章有详细介绍,还涉及到名字查找的问题

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧