【问题标题】:invalid initialization of reference of type类型引用的无效初始化
【发布时间】:2013-11-16 18:57:49
【问题描述】:

所以我有这段代码,但在将参数传递给函数时遇到了问题。编译时出现以下错误:从“const Point*”类型的表达式中对“const Point&”类型的引用进行无效初始化

struct Point
{
    int x,y;
};

void printPoint(const Point& p)
{
    cout<<"The X-coordinate is = "<<p.x<<"\nThe Y-coordinate = "<<p.y<<endl;
}

int main()
{
    const Point p1 = {3,4};
    printPoint(&p1);
}

【问题讨论】:

    标签: c++ pointers constants


    【解决方案1】:

    &amp;piPoint* 类型(它是该对象的地址),使用:printPoint(p1);

    【讨论】:

      【解决方案2】:

      引用是隐式的。您不需要&amp;。事实上,这使它成为一个指针(const Point*,它不能隐式转换为const Point&amp;)。只需printPoint(p1);

      【讨论】:

        【解决方案3】:
        int main()
        {
            const Point p1 = {3,4};
            printPoint(p1);
        }
        

        &amp;p1 给出了p1 的地址。

        【讨论】:

          【解决方案4】:

          这需要参考

          void printPoint(const Point& p)
          

          但是你传递了一个指针

          printPoint(&p1);
          

          所以,使用这个:

             printPoint(p1);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-06
            • 2012-12-18
            • 2020-06-12
            • 2015-01-26
            • 1970-01-01
            • 2021-05-04
            • 1970-01-01
            • 2013-01-07
            相关资源
            最近更新 更多