Visual Studio说:
错误(活动(不允许使用E0254类型名称
我做错了什么?
#include <iostream>
#include <string>
using namespace std;
class ComplexNumber
{
public:
float Real;
float Virtual;
ComplexNumber Addition(ComplexNumber a, ComplexNumber b)
{
ComplexNumber Result;
Result.Real = a.Real + b.Real;
Result.Virtual = a.Virtual + b.Virtual;
return Result;
}
ComplexNumber Subtraction(ComplexNumber a, ComplexNumber b)
{
ComplexNumber Result;
Result.Real = a.Real - b.Real;
Result.Virtual = a.Virtual - b.Virtual;
return Result;
}
ComplexNumber Struct(float a, float b)
{
ComplexNumber Result;
Result.Real = a;
Result.Virtual = b;
return Result;
}
ComplexNumber Multiplication(ComplexNumber a, ComplexNumber b)
{
ComplexNumber Result;
Result.Real = a.Real * b.Real - a.Virtual * b.Virtual;
Result.Virtual = a.Real * b.Virtual + a.Virtual * b.Real;
return Result;
}
ComplexNumber Division(ComplexNumber a, ComplexNumber b)
{
ComplexNumber Result;
float q = (b.Real*b.Real + b.Virtual*b.Virtual);
Result.Real = (a.Real * b.Real + a.Virtual * b.Virtual)/q;
Result.Virtual = (-a.Real * b.Virtual + a.Virtual * b.Real)/q;
return Result;
}
ComplexNumber Square(ComplexNumber a)
{
ComplexNumber Result;
Result.Real = a.Real*a.Real - a.Virtual*a.Virtual;
Result.Virtual = 2*a.Real*a.Virtual;
return Result;
}
string Display(ComplexNumber a)
{
return to_string(a.Real) + to_string(a.Virtual) + "i";
}
};
int main()
{
ComplexNumber a, b;
cin >> a.Real >> a.Virtual >> b.Real >> b.Virtual;
string str = ComplexNumber.Display(ComplexNumber.Addition(a, b));
cout << str;
}
ComplexNumber
是类的名称,因此不能像ComplexNumber.Display
和ComplexNumber.Addition
那样通过.
运算符使用其成员。
您应该在.
运算符(如(之前指定变量的名称,而不是类的名称
string str = a.Display(a.Addition(a, b));
在这种情况下,最好声明静态函数并使用::
来访问它们。
#include <iostream>
#include <string>
using namespace std;
class ComplexNumber
{
public:
float Real;
float Virtual;
static ComplexNumber Addition(ComplexNumber a, ComplexNumber b)
{
ComplexNumber Result;
Result.Real = a.Real + b.Real;
Result.Virtual = a.Virtual + b.Virtual;
return Result;
}
static ComplexNumber Subtraction(ComplexNumber a, ComplexNumber b)
{
ComplexNumber Result;
Result.Real = a.Real - b.Real;
Result.Virtual = a.Virtual - b.Virtual;
return Result;
}
static ComplexNumber Struct(float a, float b)
{
ComplexNumber Result;
Result.Real = a;
Result.Virtual = b;
return Result;
}
static ComplexNumber Multiplication(ComplexNumber a, ComplexNumber b)
{
ComplexNumber Result;
Result.Real = a.Real * b.Real - a.Virtual * b.Virtual;
Result.Virtual = a.Real * b.Virtual + a.Virtual * b.Real;
return Result;
}
static ComplexNumber Division(ComplexNumber a, ComplexNumber b)
{
ComplexNumber Result;
float q = (b.Real*b.Real + b.Virtual*b.Virtual);
Result.Real = (a.Real * b.Real + a.Virtual * b.Virtual)/q;
Result.Virtual = (-a.Real * b.Virtual + a.Virtual * b.Real)/q;
return Result;
}
static ComplexNumber Square(ComplexNumber a)
{
ComplexNumber Result;
Result.Real = a.Real*a.Real - a.Virtual*a.Virtual;
Result.Virtual = 2*a.Real*a.Virtual;
return Result;
}
static string Display(ComplexNumber a)
{
return to_string(a.Real) + to_string(a.Virtual) + "i";
}
};
int main()
{
ComplexNumber a, b;
cin >> a.Real >> a.Virtual >> b.Real >> b.Virtual;
string str = ComplexNumber::Display(ComplexNumber::Addition(a, b));
cout << str;
}