have a problem with types while assign, for example i have type point
class point:public pair<int, int>
{
    private: int index;
    public: point(int);
    point(int, int, int);
    int GetIndex();
    float GetDiff(point);
};
point::point(int Index): index(Index) {};
point::point(int x, int y, int Index): index(Index)
{
    first = x;
    second = y; 
}
int point::GetIndex()
{
    return index;
}
float point::GetDiff(point Point)
{
     return pow(pow(Point.first-first,2.0f) + pow(Point.second-second,2.0f),0.5f);
}
it's compile correct, and work well [i think)]
but when i want to use it, i get a error, it's code that use this class(point)
class Line
{
    public:
    Line();
    point firstPoint;
    point secondPoint;
};
Line::firstPoint = point(0); // i get error, same as on line 41
//and for example
struct Minimal
{
    Minimal();
    Line line();
    void SetFirstPoint(point p)
    {
        line.firstPoint = p;//41 line, tried point(p), same error. 
        UpdateDist();
    }
    void SetSecondPoint(point p)
    {
        line.secondPoint = p;
        UpdateDist();
    }
    void UpdateDist(void)
    {
        dist = line.firstPoint.GetDiff(line.secondPoint);
    }
    float dist;
};
and where is the error that give me gcc compiler
|41|error: 'firstPoint' in 'class Line' does not name a type|
 
     
    