我有两个类 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....
任何提示?
谢谢
答案 0 :(得分:3)
除非您允许修改A
或B
,否则您无法在班级A
和B
之间添加新的隐式转化。如果您真的很绝望,可以创建一个新的类C
,它将构造函数和转换运算符转换为A
和B
,并将其用作关键字类型m
...
答案 1 :(得分:3)
你可以拥有一个带有两个结构的新类,一个用于接受点,一个用于接受点,并从中构建一个新对象。