C++匿名对象的构造函数参数是使用匿名对象,这个切合语法规则吗?代码如下

C++匿名对象的构造函数参数是使用匿名对象,这个符合语法规则吗?代码如下:
#include <iostream>
#include <cmath>
using namespace std;

class Point
{
private:
int x;
int y;
public:
Point(int xx=0, int yy=0);
Point(Point& p);

int getX(){ return x; }
int getY(){ return y; }
};

Point::Point(int xx, int yy){ 
x = xx;
y = yy;
cout<<"Calling the Costructor of Point."<<endl;
}

Point::Point(Point& p):x(p.x),y(p.x){

cout<<"Calling the copy Costructor of Point."<<endl;
}

class Line
{
private:
Point p1;
Point p2;
int length;
public:
Line(Point p1, Point p2);
Line(Line& l);
int getLength(){ return length; }
Point getP1(){ return p1; }
Point getP2(){ return p2; }
};

Line::Line(Point p1, Point p2):p1(p1),p2(p2){

int x;
int y;
x = p1.getX() - p2.getX();
y = p1.getY() - p2.getY();
length = sqrt(x*x+y*y); 
cout<<"Calling constructor of Line."<<endl;
}

Line::Line(Line& l):p1(l.p1),p2(l.p2){

cout<<"Calling the copy Constructor of Line."<<endl;
length = l.getLength();
}

int main(void){

cout<<"length = "<<Line( Point(3, 4) ,Point(6, 8) ).getLength()<<endl;  // 这个会报错。

return 0;
}
编译器使用g++。
错误信息:
xx.cpp: In function ‘int main()’:
xx.cpp:61:52: error: no matching function for call to ‘Point::Point(Point)’
xx.cpp:61:52: note: candidates are:
xx.cpp:24:2: note: Point::Point(Point&)
xx.cpp:24:2: note:   no known conversion for argument 1 from ‘Point’ to ‘Point&’
xx.cpp:18:2: note: Point::Point(int, int)
xx.cpp:18:2: note:   no known conversion for argument 1 from ‘Point’ to ‘int’
xx.cpp:43:2: error:   initializing argument 1 of ‘Line::Line(Point, Point)’
------解决方案--------------------
你什么编译器?
除了sqrt有二义性,其他没发现错误(VS2008)
------解决方案--------------------
我也开始学习C++ ,但是给搂住一个建议,能把代码行贴出来就好了,Line(&Point)???这个没定义把
------解决方案--------------------
T::T(T const &)