c++ - 有没有办法修改'operator->'以便'z->im'返回复数的虚部
问题描述
我有一个对复数建模的结构 Cmplx。
class Cmplx{
double x;
double y;
public:
Cmplx(int X, int Y){x = X; y = Y;}
double& operator->(...){...}
}
我需要实现运算符,这样
int main(){
Cmlpx z(1,2);
z->im = 5;
z->re = 2;
}
将我的复数更改为 (2,5);我知道当 im 和 re 是字符串时该怎么做,但不知道该怎么做。
解决方案
你可能会滥用operator->
这种方式:
struct ComplexRef
{
ComplexRef* operator->() { return this;}
double& re;
double& im;
};
class Cmplx{
double x;
double y;
public:
Cmplx(int X, int Y){x = X; y = Y;}
ComplexRef operator->(){ return {x, y}; }
};
的重载operator ->
必须要么返回一个原始指针,要么返回一个对象(按引用或按值),而该对象operator ->
又被重载。
推荐阅读
- c# - 正则表达式 - 最少 6 个字符且没有空格。其他一切都允许
- jquery - 使用 jQuery 数据表中的列过滤器下拉列表修复标题
- javascript - Heroku 编译,但我仍然收到应用程序错误
- c# - 列表框中所有加载项后的新行(C#)
- angular - 未捕获的 ReferenceError:未定义 Angular 5
- python-3.x - Python 3.6,我有 vcvarsall.bat,但是我仍然收到找不到它的错误
- html - myRequest.open("GET", url, true) 中值 true 的含义?
- css - Webpack + 节点 + 快递
- networking - IP碎片令人困惑
- highcharts - Highchart 3d:图表图形。Z轴对齐问题