我应该创建一个表示二维点的基类(P2D)和一个表示三维点的派生类(P3D)。在第一节课中,我用这种方式创建了一个方法:
virtual istream& set(istream&); //sets the values
istream& P2D::set(istream& in){
in >> x >> y;
return in;
}
在第二节课中,改为:
istream& set(istream&); //sets the values
istream& P3D::set(istream& in){
P2D::set(in);
in >> z;
return in;
}
在主要功能中,我考虑在矢量中放置所有点(无论它们是二维还是三维),然后使用{{1}以某种方式设置while
周期中的所有点上面的方法。
以下是有问题的代码:
set
我知道这是错的,我知道为什么,但有没有机会克服不使用dinamic记忆?如果他想插入两维或三维点,我是否被迫让用户选择?
答案 0 :(得分:2)
这似乎对我不利,因为继承意味着'是'关系',3D点绝对不是2D点。
这反映了您的问题,因为没有像您建议的那样优雅的方式。 IMO,用户必须决定是否输入2D或3D点,但是将它保持为2D点的集合仍然没有意义。
这一切都取决于你以后要用集合中的积分做什么。也许你应该有一个Point
类型作为2D和3D点的父类,但是没有更大的背景就很难分辨。