【发布时间】:2017-01-14 15:36:25
【问题描述】:
我需要一些关于操作员分配的帮助。这是代码:
Sinusoid.h:
class Sinusoid : public Component
{
float fs, f, A, fi;
int N;
double *array;
public:
Sinusoid(float fs, float f, float Ts, float fi, float A);
void count(int type=1);
void clear();
~Sinusoid();
double *getArray() { return this->array; }
double*& operator=(Sinusoid* const &rhs) {
return rhs->array;
};
};
main.cpp:
#include "headers.h"
int main()
{
int N = 1000 * 2.5;
Sinusoid *sinus = new Sinusoid(1000, 15, 2.5, (M_PI / 4), 0.7);
double **answers = new double*[7];
for (int i = 0; i < 7; i++) {
answers[i] = new double[N];
}
//lab1
//Zad1
sinus->count(1);
answers[0] = sinus;
return 0;
}
当我构建这段代码时,我遇到了以下问题:
C2440 '=':无法从 'Sinusoid *' 转换为 'double *' main.cpp:15
我知道我可以使用重载运算符“=”分配两个类,但我想采用类的私有成员(双 *array;)。我知道我可以通过“getArray()”方法做到这一点,但我想学习更多“美丽”的做法。希望你能帮助我。
谢谢。
【问题讨论】:
-
*answers[0] = sinus ?
-
是的,我知道我不能使用 sinus->array 因为它是类的私有成员 - 我想使用重载运算符“=”将其分配给 answers 变量
-
即使我做了 *answers[0] 还是一样。
标签: c++ visual-c++ operator-overloading