gpt4 book ai didi

c++ - 在 C++ 中创建一个 Point 类

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:58 26 4
gpt4 key购买 nike

现在我正在使用 std::pair 来表示 C++ 中的二维点。但是,我对不得不写感到恼火

typedef std::pair<double, double> Point;

Point difference = Point(p2.first - p1.first,
p2.second - p1.second);

而不是能够重载 operator+ 和 operator-。

所以,我的问题是,我应该上 Point 课吗

  • 公开派生自 std::pair 并添加我自己的成员函数?这很好,因为我的所有代码都可以保持不变。我不会做类似 std::pair<double, double>* p = new Point; 的事情所以我不必担心虚拟析构函数之类的事情。
  • 滚动我自己的 Point 类,这很烦人,因为我正在复制 std::pair 的功能,但我是“以纯粹的方式”。
  • 为 std::pair 制作 operator+ 和 operator- 的模板特化,诚然,我不记得它们是在源文件还是头文件中。

我想这有待商榷,我真的很想做#1,但我不知道这是否是个坏主意,因为我听说从 STL 继承是不行的。

最佳答案

您可以推出自己的 Point 类,但在内部使用 std::pair 来存储数据。这可以防止从 STL 继承问题,但仍然使用 std::pair 的功能。

关于c++ - 在 C++ 中创建一个 Point 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com