这个错误是什么意思? C6001:使用未初始化的内存 'Rect.'
What does this error mean? C6001: using uninitialized memory 'Rect.'
Visual Studio 给出了这个奇怪的错误:C6001:使用未初始化的内存 'Rect.'
#include<iostream>
#include<cstring>
using namespace std;
class Rectangle
{public:
int length, width;
int Area(int length, int width)
{
return length * width;
}
};
int main()
{
Rectangle d1;
d1.length = 5;
d1.width = 10;
cout << "d1 area=" << d1.length * d1.width << endl;
Rectangle Rect;
Rect.Area(Rect.length, Rect.width);
return 0;
}
这是什么意思,如何解决?
在此声明中声明的对象Rect
Rectangle Rect;
有未初始化的数据成员 length
和 width
。
您将这些未初始化的数据成员作为参数传递给成员函数Area
。
Rect.Area(Rect.legth, Rect.width);
所以调用没有意义。
你可以这样写
Rectangle Rect = { 5, 10 };
std::cout << Rect.Area(Rect.legth, Rect.width) << '\n';
注意Area函数要么是静态成员函数,要么使用对象的数据成员length
和width
那就是它应该被声明为
static long long int Area(int length, int width)
{
return static_cast<long long int>( length ) * width;
}
或喜欢
long long int Area() const
{
return static_cast<long long int>( length ) * width;
}
Visual Studio 给出了这个奇怪的错误:C6001:使用未初始化的内存 'Rect.'
#include<iostream>
#include<cstring>
using namespace std;
class Rectangle
{public:
int length, width;
int Area(int length, int width)
{
return length * width;
}
};
int main()
{
Rectangle d1;
d1.length = 5;
d1.width = 10;
cout << "d1 area=" << d1.length * d1.width << endl;
Rectangle Rect;
Rect.Area(Rect.length, Rect.width);
return 0;
}
这是什么意思,如何解决?
在此声明中声明的对象Rect
Rectangle Rect;
有未初始化的数据成员 length
和 width
。
您将这些未初始化的数据成员作为参数传递给成员函数Area
。
Rect.Area(Rect.legth, Rect.width);
所以调用没有意义。
你可以这样写
Rectangle Rect = { 5, 10 };
std::cout << Rect.Area(Rect.legth, Rect.width) << '\n';
注意Area函数要么是静态成员函数,要么使用对象的数据成员length
和width
那就是它应该被声明为
static long long int Area(int length, int width)
{
return static_cast<long long int>( length ) * width;
}
或喜欢
long long int Area() const
{
return static_cast<long long int>( length ) * width;
}