有一个没有修改源的新转换运算符

时间:2015-12-10 21:16:05

标签: c++ operator-overloading operators

我有两个类 Dot Point ,这两个类完全相同。 它们来自两个不同的库,我必须同时使用它们。

我希望能够做到:

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....

任何提示?

谢谢

2 个答案:

答案 0 :(得分:3)

除非您允许修改AB,否则您无法在班级AB之间添加新的隐式转化。如果您真的很绝望,可以创建一个新的类C,它将构造函数和转换运算符转换为AB,并将其用作关键字类型m ...

答案 1 :(得分:3)

你可以拥有一个带有两个结构的新类,一个用于接受点,一个用于接受点,并从中构建一个新对象。