如何从类中显示坐标?

时间:2016-01-06 14:35:52

标签: c++ class object

我在显示读入类的坐标时遇到问题。这是我第一次使用课程,所以请理解! 以下是我到目前为止的情况:

#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)

2 个答案:

答案 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是这个类的成员