c++ - 有一个新的转换运算符而不修改源

标签 c++ operator-overloading operators

我有两个类 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....

有什么提示吗?

谢谢

最佳答案

您不能在类 AB 之间添加新的隐式转换,除非您被允许修改 A B。如果你真的很绝望,你可以创建一个新类 C,它具有从 AB 转换构造函数和转换运算符,并且将其用作 m...

的键类型

关于c++ - 有一个新的转换运算符而不修改源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34211877/

相关文章:

java - ~ 和 ! 和有什么不一样?运算符(operator)?

c++更新 boost 版本问题

c++ - operator<<() 由于继承而无法从模板解析

python - python 运算符重载是如何工作的

c++ - 模板和类型转换运算符(operator)

ruby - 如何在不使用文本的情况下找到 Ruby 运算符的含义?

c++ - 数组 C++ 中销售最多和最少的项目

c++ - Linux MinGW : on compiling he output list of 8 "nultiple definitions"

c++ - 在函数中传入和修改数组

python - Airflow 默认on_failure_callback