我在显示读入类的坐标时遇到问题。这是我第一次使用课程,所以请理解! 以下是我到目前为止的情况:
#include <iostream>
using namespace std;
class Vector{
private:
float x;
float y;
public:
Vector(float f1, float f2)
{
x=f1;
y=f2;
}
Vector(){}
float display()
{
Vector v;
cout << "(" << v.x << "," << v.y << ")" << endl;
return 0;
}
};
int main()
{
Vector v1(0.5, 0.5);
cout << "v1 ";
v1.display();
system("pause");
return 0;
}
打印
v1 (-1.07374e+008,-1.07374e+008)
答案 0 :(得分:4)
您的问题是您没有打印出在main()
中创建的Vector的坐标,而是在您的函数中创建了默认值。而不是
float display()
{
Vector v;
cout << "(" << v.x << "," << v.y << ")" << endl;
return 0;
}
你需要
float display()
{
//Vector v; remove this
cout << "(" << x << "," << y << ")" << endl;
// no v.x no v.y
return 0;
}
我建议你将默认构造函数更改为
Vector() : x(0), y(0) {}
所以它会打印
v1 (0,0)
您还应该更改
Vector(float f1, float f2)
{
x=f1;
y=f2;
}
要
Vector(float f1, float f2) : x(f1), y(f2) {}
因为这是一个很好的习惯。在处理非POD类型时,这可以节省资源和CPU周期。有关详细信息,请参阅Why should I prefer to use member initialization list?
答案 1 :(得分:1)
Vector v;
行是错误的。您基本上是在创建一个新的未初始化的向量,而不是创建自己的实例。
一次更正将是:
int display()
{
cout << "(" << x << "," << y << ")" << endl;
return 0;
}
因为x和y是这个类的成员