Visual studio错误:不允许使用错误(活动)E0254类型名称


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.DisplayComplexNumber.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;
}

最新更新