c++关于类的一个问题,求大神解答!!

2025-01-25 01:34:49
推荐回答(2个)
回答1:

D:\C++\实验5\2.cpp(12) : error C2804: binary 'operator +' has too many parameters
D:\C++\实验5\2.cpp(28) : error C2065: 'i' : undeclared identifier
D:\C++\实验5\2.cpp(42) : error C2784: 'class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> __cdecl std::operator +(_D,const class std::reverse_iterator<_RI,_Ty,_Rt,_Pt,_D> &)' : could not deduce template argument for '' from 'int'
D:\C++\实验5\2.cpp(42) : error C2677: binary '+' : no global operator defined which takes type 'class Complex' (or there is no acceptable conversion)
这是错误,下面是源程序,帮忙改一下,谢谢~

#include
using namespace std;
class Complex
{
public:
Complex()
{real=0;imag=0;}
Complex(double r,double i)
{real=r;imag=i;}
Complex operator + (Complex &c2);
Complex operator + (int &i);
Complex operator +(int&,Complex &);
void display();
private:
double real;
double imag;
};
Complex Complex::operator +(Complex &c)
{
return Complex(real+c.real,imag+c.imag);
}
Complex Complex::operator +(int &i)
{
return Complex(real+i,imag);
}
Complex Complex::operator +(int&,Complex &c)
{
return Complex(i+c.real,c.imag);
}

void Complex::display()
{
cout<<"("<}
int main()
{
Complex c1(5,6),c2(3,-6),c3;
int i=5;
c3=c1+c2;
cout<<"c1+c2=";
c3.display();
c3=i+c1;
cout<<"i+c1=";
c3.display();
c3=c1+i;
cout<<"c1+i=";
c3.display();

return 0;
}
重载+号的时候,只能是一个参数,即a+b中的b,叫单目重载。
第二个错误你在函数体内忽然出现了一个i,不知道怎么来的。
第三四个错误是同样的,都是不能再重载+号的时候出现两个参数

回答2:

你对class的逻辑概念理解有误。把基础打好吧。
void Student::get_inf(){
cout<<"Please input the student's information:"< int i,k;
Student t[10000];// 这个不该有
for(i=0;i {
cout<<"input the name:";
cin>>t[i].name;// 应该存储到类成员name,例如 cin>>name
是否可以解决您的问题?