我有这个我想要测试的代码,但出于某种原因我得到了上面的错误:
#include <iostream>
using namespace std;
class Complex
{
private:
int real;
int imag;
public:
Complex(): real(0), imag(0) { }
void Read()
{
cout<<"Enter real and imaginary number respectively:"<<endl;
cin>>real>>imag;
}
Complex* Add(Complex* comp2)
{
Complex* temp;
temp->real=real+comp2->real;
/* Here, real represents the real data of object c1 because this function is called using code c1.Add(c2) */
temp->imag=imag+comp2->imag;
/* Here, imag represents the imag data of object c1 because this function is called using code c1.Add(c2) */
return temp;
}
void Display()
{
cout<<"Sum="<<real<<"+"<<imag<<"i";
}
};
class Test: public Complex
{
public:
Test() {};
~Test()
{
cout << "\nObject destroyed\n";
};
};
int main()
{
//Complex c1,c2;
Complex* c1 = new Complex();
Complex* c2 = new Complex();
//Test c3;
Test* c3 = new Test();
c1->Read();
c2->Read();
//c3.Read();
c3=c1->Add(c2);
c3->Display();
return 0;
}
有人可以帮我解决这个错误吗?它来自哪里?
注意:我正在对可以使用基类中的方法和对象的派生类进行一些测试。 我想创建一个测试类型的对象,它可以使用2个复杂类型的对象,这些对象是通过基类的显示方法添加然后显示的(希望它有意义)。
答案 0 :(得分:3)
在这一行c3 = c1->Add(c2);
中,您尝试将Complex*
(基类)分配给c3
(Test*
- 派生类),这是非法的。您不能将基类分配给派生类,但另一种方法是合法的。