gom*_*mfy 0 c++ overloading variable-assignment operator-keyword
我的问题:我正在尝试重写赋值运算符以指向两个不同的类.这是一个例子:
dc.h:
#ifndef DC_H_
#define DC_H_
#include "ic.h"
class dc {
double d;
char c;
public:
dc(): d(0), c(0) { }
dc(double d_, char c_): d(d_), c(c_) { }
dc* operator=(const ic* rhs);
~dc() { }
};
#endif /* DC_H_ */
Run Code Online (Sandbox Code Playgroud)
class ic.h:
#ifndef IC_H_
#define IC_H_
class ic {
int i;
char c;
public:
ic(): i(0), c(0) { }
ic(int i_, char c_): i(i_), c(c_) { }
~ic() { }
};
#endif /* IC_H_ */
Run Code Online (Sandbox Code Playgroud)
dc.cpp:
#include "dc.h"
dc* dc::operator=(const ic* rhs) {
d = rhs->i;
c = rhs->c;
return this;
}
Run Code Online (Sandbox Code Playgroud)
ic.cpp:
#include "ic.h"
Run Code Online (Sandbox Code Playgroud)
main.cpp中:
#include "dc.h"
#include "ic.h"
#include<iostream>
int main() {
dc DC;
ic IC;
dc* dcptr = &DC;
ic* icptr = &IC;
dcptr = icptr;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
错误:无法在分配中将'ic*'转换为'dc*'
如果我使用引用而不是指针来完成所有这些工作.不幸的是,因为我想使用指向ic和dc的指针作为另一个类中的成员,所以我不能使用引用,因为引用作为成员必须初始化,一旦初始化它们就不能更改为引用另一个对象.我希望能够用ic和dc进行算术运算,例如:
dc *d1, *d2, *d3;
ic *i1, *i2, *i3;
*d1 = (*d1)*(*i1) + (*i2)*(*d2) - (*d3)*(*i3);
Run Code Online (Sandbox Code Playgroud)
但是我希望我的代码看起来不错,并且不希望我的代码(*)*(*)遍布整个地方.相反,像这样:
d1 = d1*i1 + i2*d2 - d3*i3;
Run Code Online (Sandbox Code Playgroud)
这就是我想这样做的原因.如果可能,请告诉我.对我来说,似乎编译器想要调用指针赋值的默认指针而不是重载指针.
感谢您的帮助!
| 归档时间: |
|
| 查看次数: |
4327 次 |
| 最近记录: |