不能使用'Shape *'类型的左值初始化'Shape Shape :: *'类型的返回对象

时间:2017-02-13 01:44:34

标签: c++ pointers object inheritance

问题是静态函数期望返回类型为Shape Shape::* ??并得到一个只是Shape*

static Shape Shape::*makeShape(char ch,int posx,int posy){

    Shape *rp = new O(posx, posy);
    return rp;
}

O::O(int posx, int posy){
    x = &posx;
    y = &posy;
}

1 个答案:

答案 0 :(得分:1)

// return type (marked with v)
//     vvvvv        v
static Shape Shape::*makeShape
//           ^^^^^^^ ^^^^^^^^^
// function name (marked with ^)

您似乎混淆了您的返回类型和您的函数名称。

你的意思可能是

static Shape *Shape::makeShape(...)