类的组合怎么用

勇敢的搬砖人 2010-05-14 10:06:47
/*
我正在做一个人手建模的程序,用OpenGL做。
这个程序主要是把人手Hand显示出来,并实现和数据手套的交互,
即人带上数据手套手指随意运动,程序把手指的运动状态显示在屏幕上。
人手Hand包括手掌Palm、手指Finger,手指包括Index、Middle、
Ring、Little、Thumb。
类Index、Middle、Ring、Little、Thumb是Finger的派生类。
我想问的是这个组合类和继承怎么写?下面的写法对吗?
*/
class Hand
{
pubic:
Palm;
Finger;
void display();
}
class Index:pubic Finger
{
display();
}

class Middle:pubic Finger
{
display();
}

class Ring:pubic Finger
{
display();
}

class Little:pubic Finger
{
display();
}

...全文
708 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongtao1010 2012-12-05
  • 打赏
  • 举报
回复
这个不是类的组合
_ShuXin_ 2011-10-10
  • 打赏
  • 举报
回复
5楼正解。
yaozhiyong110 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lovec001 的回复:]
引用 6 楼 sin816 的回复:
说错了 是函数的隐藏 不是覆盖

什么叫函数的隐藏?
[/Quote]

隐藏就是你调display的时候调的是子类的不是父类的(父类的display存在,只是被子类的屏蔽了)
用域访问符可以访问到父类的display

覆盖就是基类申明display为虚函数 那么会有个虚函数表 即使是父类指针指向派生类对象调的也是
派生类的display(若是隐藏当然就调的是父类的display了) 具体的你可以搜下 虚函数的用法
dong364 2010-05-15
  • 打赏
  • 举报
回复
lz,好好去看c++书,从你的描述来看,你对c++的认识非常肤浅
勇敢的搬砖人 2010-05-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lovec001 的回复:]
引用 8 楼 visualeleven 的回复:
你所说的类的组合就是指将一些相关的类放在一个类中,作为这个类的类成员变量

一个类可以有其他若干个类作为其对象,是这个意思不?
[/Quote]
class Hand
{
Palm m_palm;
Finger m_index,m_middle,m_ring,m_little,m_thumb;
}
/*
这是我导师给我的思路,他的意思是不是m_index,m_middle,m_ring,m_little,m_thumb
都是类Finger的对象?
这种情况下,Palm和Finger是不是都作为Hand的类对象?
*/
ekisstherain 2010-05-15
  • 打赏
  • 举报
回复
我也来关注下~~~
loveqq1943 2010-05-14
  • 打赏
  • 举报
回复
C++还不熟哈哈哈哈哈,爱莫能助爱莫能助
勇敢的搬砖人 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 visualeleven 的回复:]
你所说的类的组合就是指将一些相关的类放在一个类中,作为这个类的类成员变量
[/Quote]
一个类可以有其他若干个类作为其对象,是这个意思不?
Eleven 2010-05-14
  • 打赏
  • 举报
回复
你所说的类的组合就是指将一些相关的类放在一个类中,作为这个类的类成员变量
勇敢的搬砖人 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sin816 的回复:]
说错了 是函数的隐藏 不是覆盖
[/Quote]
什么叫函数的隐藏?
sin816 2010-05-14
  • 打赏
  • 举报
回复
说错了 是函数的隐藏 不是覆盖
勇敢的搬砖人 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wltg2001 的回复:]
这不是继承啊,这么写组合对不?
=======
我不知道什么叫组合,我也不记得C++中有类的组合的,我想你的意思是在一个类中定义另外的类作成员变量吧。如果是这个意思,你上面的写法也是对的。
[/Quote]
class Head
  {
  public:
   void Look(void) { m_eye.Look(); }
   void Smell(void) { m_nose.Smell(); }
   void Eat(void) { m_mouth.Eat(); }
   void Listen(void) { m_ear.Listen(); }
  private:
   Eye m_eye;
   Nose m_nose;
   Mouth m_mouth;
   Ear m_ear;
  };

Finger和hand的关系就和这里Eye和Head的关系一样。
sin816 2010-05-14
  • 打赏
  • 举报
回复
这个是函数的覆盖,继承要求父类和子类的同名函数必须是虚函数
wltg2001 2010-05-14
  • 打赏
  • 举报
回复
这不是继承啊,这么写组合对不?
=======
我不知道什么叫组合,我也不记得C++中有类的组合的,我想你的意思是在一个类中定义另外的类作成员变量吧。如果是这个意思,你上面的写法也是对的。
勇敢的搬砖人 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wltg2001 的回复:]
你写的是继承
[/Quote]
class Hand
{
pubic:
Palm;
Finger;
void display();
}
这不是继承啊,这么写组合对不?
wltg2001 2010-05-14
  • 打赏
  • 举报
回复
你写的是继承

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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