【问题标题】:build a shape class Square建立一个形状类 Square
【发布时间】:2018-10-11 16:09:27
【问题描述】:

我有一个任务,我觉得非常困难。任何帮助将不胜感激。

通过创建形状类圆形、方形和三角形来构建层次结构。对于这些派生类,创建默认构造函数和构造函数,其参数可以使用正确数量的 Point 对象适当地初始化形状(即,Circle 需要一个 Point 中心和一个半径;Square 需要四个 Point 顶点,而 Triangle 需要三个 Point 顶点)。

在 main() 中,分别创建一个实例:半径为 23 的圆形、边长为 25 的正方形和边长为 10、20、30 的三角形。定义所有这些实例,使原点 ( 0,0) 在每个对象内的某处。显示来自每个对象的信息。

当我在 main() 下输入 Square s(25, Point(0,0));

class Square : public Shape
{
  double sides;
  Point cp;

  public:
  Square() : sides(0) {}
  Square(double side, const Point &center) : sides(side), cp(center){}

  void bbox()
  {
     Point bottomright = cp + Point(sides/2, -sides/2);
     Point topleft = cp + Point(-sides/2, sides/2);
     Point topright = cp + Point(sides/2, sides/2);
     Point bottomleft = cp + Point(-sides/2, -sides/2);

     std::cout << "Square::bounding " << bottomright  << topleft << topright << bottomleft;
  }

  double area() {std::cout << "Square::area "; return (sides * sides);}
  double circumference() {std::cout << "Square::perimeter "; return sides + sides + sides + sides;}

};

类打印出来

Square::area 625
Square::perimeter 100
Square::bounding (12.5,-12.5)(-12.5,12.5)(12.5,12.5)(-12.5,-12.5)

我想知道根据作业的要求,这看起来是否正确?

【问题讨论】:

    标签: c++ shapes


    【解决方案1】:

    不,不是,从要求看来,您需要 Square 构造函数将 4 个点作为参数:

    Square(const Point& pt1,const Point& pt2,const Point& pt3,const Point& pt4)
    

    正方形需要四个 Point 顶点

    对吗?

    【讨论】:

    • @Jay 那么你的问题到底是什么?
    • 如果我创建我的构造函数来获取 4 个点,在 main 下我必须创建这样的东西:Square s(25, Point(0,0), Point(0,0), Point( 0,0), 点(0,0); ?
    • @Jay 不,我会说类似Square(Point(-1,-1),Point(-1,1),Point(1,1),Point(1,-1))。您无需通过边或中心的长度,只需在拐角处。
    • 那我是不是把作业的最后一部分读错了?它说“在 main() 中,分别创建一个实例:半径为 23 的圆形、边长为 25 的正方形和边长为 10、20、30 的三角形。定义所有这些实例,使原点 ( 0,0) 位于每个对象内的某个位置。显示来自每个对象的信息。” ??你怎么看?
    • @Jay 然后给出不同的分数。如果你在(+/-) 12.5, (+/-) 12.5, 上给分,你就会得到。
    猜你喜欢
    • 2012-07-27
    • 2013-01-24
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多