这段c ++代码有什么问题?我正在练习面向对象的编程

时间:2010-07-19 13:29:55

标签: c++ oop

#include <iostream>
#include <math.h>

using namespace std;

class Point{
public:
    Point(int xx, int yy);
    ~Point();

    int getX();
    int getY();
    void setX(int xx){ x = xx; }
    void setY(int yy){ y = yy;}

private:
    int x;
    int y;

};

Point::Point(int xx, int yy)
{
    x = xx;
    y = yy;
}

Point::~Point()
{
}

int Point::getX()
{
    return x;
}


int Point::getY()
{
    return y;
}

class Line
{
public:
    Line(Point one, Point two);
    ~Line();
    float length();

private:
    Point a;
    Point b;
};

Line::Line(Point one, Point two)
{
    a.setX = one.getX;
    a.setY = one.getY;
    b.setX = two.getX;
    b.setY = two.getY;
}

float Line::length()
{
    int x1,y1,x2,y2;
    float linelength;

    x1 = a.getX;
    y1 = a.getY;
    x2 = b.getX;
    y2 = b.getY;

    linelength = ((x2-x1)*(x2-x1)) + ((y2-y1)*(y2-y1));
    linelength = sqrtf(linelength);

    return linelength;
}

int main()
{
    Point mine(1,1);
    Point yours(2,2);

    Line ours(mine, yours);

    cout << Line.linelength();

    return 0;
}

3 个答案:

答案 0 :(得分:2)

你的问题不明确。你的意思是它不能编译?

尝试正确调用函数,即

x1 = a.getX();

而不是

x1 = a.getX;

a.setX(one.getX());

而不是

a.setX = one.getX;

但可能还有更多错误......

答案 1 :(得分:2)

a.setX = one.getX;
a.setY = one.getY;
b.setX = two.getX;
b.setY = two.getY;

setXgetX是函数,而不是变量。因此,您需要使用它们:

a.setX(one.getX());

在将来获得这方面的帮助时,您应该提供一些有关代码错误的更多信息:您获得了哪些编译器错误?什么不起作用?你有什么问题?

答案 2 :(得分:1)

有一点是该行

cout << Line.linelength();

应该是

cout << ours.length();