虚函数和继承问题?

billik 2002-06-27 05:53:31
base 类中含有虚函数
derived 为base的继承类

base a*= new derived [200];

derived::set(base* value)
{
a[0]=*value;
}

上面的语句是否正确?
其中调用的时候外面付给value的值的类型也是derived类型

怎样才能将外面传来的derived值保存下来?
...全文
25 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
movingboy 2002-06-27
  • 打赏
  • 举报
回复
编译时就应该通不过。
carfieldQ_Q 2002-06-27
  • 打赏
  • 举报
回复
derived d;
derived2 d2;
d2.SetValue(d);
~~~~

最后一句为什么不会成功呢?

//////////
首先:编译通过没有?,这个程序里类之间的相互调用太多,太乱,我实在不知道能否编译通过(我指你的完整的程序)
如果编译通过了,最后一句执行却不成功我想可能有以下原因:

1.
class derived2
{
public:
derived2();
virtual setValue(base&a);
~~~~
};

derived d; 虽然derived是base的子类,可能也存在类型不匹配的问题。

2. 你的参数定义的是应用类型,那调用的时候最好用引用类型或者指针类型

改成 d2.SetValue(&d);试试看

:)
不知道能不能帮到你,也不知道自己说得对不:)




qxp 2002-06-27
  • 打赏
  • 举报
回复
吧你的全部的代码都贴出来吧,上面那个太乱了,
billik 2002-06-27
  • 打赏
  • 举报
回复
快呀,帮帮忙,我急坏了!!!!!
billik 2002-06-27
  • 打赏
  • 举报
回复
哪个的拷贝构造函数?
我已经在derived中写了呀
haidaya 2002-06-27
  • 打赏
  • 举报
回复
你的那个derived2中的values是个什么东西呀,属于undeclared identifier
SetValue()中的i也是,没有申明呀,
这句values[i] = value;什么意思?
我看不懂这段程序
casho 2002-06-27
  • 打赏
  • 举报
回复
要用到拷贝构造函数
billik 2002-06-27
  • 打赏
  • 举报
回复
比较急,请各位高手帮帮忙!
billik 2002-06-27
  • 打赏
  • 举报
回复
哪个的默认构造函数?
billik 2002-06-27
  • 打赏
  • 举报
回复
class base
{
public:

virtual int F1()=0;
};

class derived : public base
{
private:
int a;
public
virtual int F1();
};

class base2
{
public:
base* values;
public:
virtual setValue(base& a)=0;
};

class derived2
{
public:
derived2();
virtual setValue(base&a);
};

derived2::derived2()
{
values = new derived[200];
}

derived2::setValue(base& value)
{
values[i] = value;
}
以上是类的定义

调用:

derived d;
derived2 d2;
d2.SetValue(d);

最后一句为什么不会成功呢?
leasun 2002-06-27
  • 打赏
  • 举报
回复
可以,不过别忘了默认构造函数
andy_lau 2002-06-27
  • 打赏
  • 举报
回复
把整个类的代码贴出来,不明白你的意思。
Wargod2002 2002-06-27
  • 打赏
  • 举报
回复
不明白为什么要这样搞
billik 2002-06-27
  • 打赏
  • 举报
回复
急,帮帮忙!!!!

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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