【问题标题】: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】:
&pi 是 Point* 类型(它是该对象的地址),使用:printPoint(p1);
【解决方案2】:
引用是隐式的。您不需要&。事实上,这使它成为一个指针(const Point*,它不能隐式转换为const Point&)。只需printPoint(p1);。
【解决方案3】:
int main()
{
const Point p1 = {3,4};
printPoint(p1);
}
&p1 给出了p1 的地址。
【解决方案4】:
这需要参考
void printPoint(const Point& p)
但是你传递了一个指针
printPoint(&p1);
所以,使用这个:
printPoint(p1);