谁能帮我解决这个问题,我给他100分!!!
假如有一个基类:Shape 表示形状,而有两个派生类:Box 和Sphere 分别表示 盒子和球体,他们各自有各自的成员变量,比如Box 有 长,宽,高,而 球体Sphere 有半径。
现在有一个数组:Vector<Shape *> v1 用来储存基类的指针,然后指向相应的派生类的指针,比如v1[0] = new Box();v1[1] = new Sphere();等等。
有一个棘手的问题,就是,由于长宽高 和 半径是不同的量,比如长宽高用数组,而半径用一个float就可以储存,这就需要使用返回不同值的函数,一个返回数组的函数在类Box中,而另一个返回float的函数在Sphere中,这里就存在一个大问题了:由于Vector中存的是Shape基类的指针,以上的两个函数都不在Shape基类中声名过,虽然知道了每一个Vector元素是Box,还是Sphere,但我在这无法调用这两个相应的函数!!!因为我还没得到 Box 或 Sphere 的指针,而使用RTTI就可以强制将基类指针转换为相应的派生类的指针,进而调用相应函数返回相应地值。但我不想使用RTTI,因为这样付出的效率代价太大了!我想这可能是设计问题,那位大侠再帮我看看。