我剛剛完成創建一個「Point」類,並且正在使用具有兩個Point對象(Point startpoint和Point endpoint)作爲數據成員的「Line」類。我在接受兩個Point對象作爲參數,並如下最初創建它我行類創建一個構造函數:爲什麼我不能在這裏使用成員初始化列表?
Line(const Point& p1, const Point& p2)
{
startpoint = p1;
endpoint = p2;
}
一切都很好,但後來我決定,我會用一個成員初始化列表,而不是分配給成員以p1和p2在身上,只是因爲......但是,當我把它改爲:
Line(const Point& p1, const Point& p2): startpoint(p1), endpoint(p2)
{
}
我得到一個錯誤說「沒有構造的情況下‘點::點’相匹配的參數列表」和沒不明白這意味着什麼。
爲什麼成員初始化列表不能在這裏工作?
謝謝。
編輯:對不起,我不知道如果我的點類的細節是相關或不:
// Point.h
class Point
{
private:
double x;
double y;
public:
Point();
Point(Point& p);
Point(double x1, double y1);
~Point();
double X() const;
double Y() const;
void X(double newx);
void Y(double newy);
};
// Point.cpp
#include "Point.h"
Point::Point(): x(0), y(0)
{
}
Point::Point(Point& p)
{
x = p.x;
y = p.y;
}
Point::Point(double x1, double y1): x(x1), y(y1)
{
}
Point::~Point()
{
}
double Point::X() const
{
return x;
}
double Point::Y() const
{
return y;
}
void Point::X(double newx)
{
x = newx;
}
void Point::Y(double newy)
{
y = newy;
}
向我們展示您的點類可能會有所幫助 – Grizzly 2012-01-09 17:47:15
這意味着Point類的複製構造函數可能會出錯。 – ybungalobill 2012-01-09 17:48:29
爲了將來的參考,不是'const'的東西可以隱式轉換爲const的東西,但是const的東西不能隱式轉換成不是的東西,這是你在這裏遇到的問題 – 2012-01-09 18:19:30