【问题标题】:Have a new conversion operator without modify sources有一个新的转换运算符而不修改源
【发布时间】:2015-12-10 21:16:05
【问题描述】:

我有两个类 DotPoint 做同样的事情。 它们只是来自两个不同的库,我必须同时使用它们。

我希望能够做到:

Dot d;
Point p = d;

std::map<Dot, int> m;
m[p] = 1;

我无法修改库源代码。

我的想法是在我的实现中添加一些运算符...但我遗漏了一些东西,我无法编译我的代码。

我只有很多

error: prototype for 'void Dot::operator=(const Point&)' 
    does not match any in class....

有什么提示吗?

谢谢

【问题讨论】:

  • m[d]替换m[p]?

标签: c++ operator-overloading operators


【解决方案1】:

除非允许修改AB,否则您不能在类AB 之间添加新的隐式转换。如果你真的很绝望,你可以创建一个新类C,它可以将构造函数从AB 转换为B,并将其用作m 的键类型...

【讨论】:

    【解决方案2】:

    你可以创建一个包含两个构造器的新类,一个用于接受点,一个用于接受点,然后从它们构建一个新对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      相关资源
      最近更新 更多