类的组合怎么用本帖最后由 lovec001 于 2010-05-14 22:14:43 编辑/*我正在做一个人手建模的程序,用OpenGL
类的组合怎么用
本帖最后由 lovec001 于 2010-05-14 22:14:43 编辑
/*
我正在做一个人手建模的程序,用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();
}
[最优解释]你所说的类的组合就是指将一些相关的类放在一个类中,作为这个类的类成员变量
[其他解释]隐藏就是你调display的时候调的是子类的不是父类的(父类的display存在,只是被子类的屏蔽了)
用域访问符可以访问到父类的display
覆盖就是基类申明display为虚函数 那么会有个虚函数表 即使是父类指针指向派生类对象调的也是
派生类的display(若是隐藏当然就调的是父类的display了) 具体的你可以搜下 虚函数的用法
[其他解释]你写的是继承
[其他解释]class Hand
{
pubic:
Palm;
Finger;
void display();
}
这不是继承啊,这么写组合对不?
[其他解释]这不是继承啊,这么写组合对不?
=======
我不知道什么叫组合,我也不记得C++中有类的组合的,我想你的意思是在一个类中定义另外的类作成员变量吧。如果是这个意思,你上面的写法也是对的。
[其他解释]这个是函数的覆盖,继承要求父类和子类的同名函数必须是虚函数
[其他解释]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的关系一样。
[其他解释]说错了 是函数的隐藏 不是覆盖
[其他解释]什么叫函数的隐藏?
[其他解释]一个类可以有其他若干个类作为其对象,是这个意思不?
[其他解释]
C++还不熟哈哈哈哈哈,爱莫能助爱莫能助
[其他解释]
我也来关注下~~~
[其他解释]
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的类对象?
*/
[其他解释]lz,好好去看c++书,从你的描述来看,你对c++的认识非常肤浅
[其他解释]5楼正解。
[其他解释]这个不是类的组合