错误 C2228:'.GetX'左侧必须具有类/结构/联合

error C2228: left of '.GetX' must have class/struct/union

本文关键字:联合 结构 C2228 GetX 错误      更新时间:2023-10-16

下面是Point.h:

class Point
{
public:
    Point();
    Point(int, int);
    void SetX(int);
    void SetY(int);
    int GetX() const;
    int GetY() const;
private:
    int x, y;
};

在另一个类"Employee"中,有一个方法,其参数是一个Point对象,我想调用其成员方法GetX()和GetY(),但它失败了,错误为"C2228: left of"。GetX'必须有class/struct/union '和' C2228: left of '。GetY"必须有类/结构/联合",为什么会发生这种情况?

Employee.h

class Employee
{
public:
    Employee(string str, Point &p)
    {
        name = str;
        point = p;
    }
    void SetCoordinates(Point &p)
    {
        point.SetX(p.GetX()); //**error here**
        point.SetY(p.GetY()); //**error here**
    }
private:
    string name;
    Point point;
};

在您的实现中,您使用的参数需要名称,而不仅仅是类型:

class Employee
{
public:
    Employee(string str, Point p)
    {
        name = str;
        point = p;
    }
    void SetCoordinates(Point &p)
    {
        point.SetX(p.GetX());
        point.SetY(p.GetY());
    }
private:
    string name;
    Point point;
};