我正在设计一个程序,该程序需要三个给定点并计算第四个以创建平行四边形。到目前为止我所拥有的是:
struct Parallelogram : public Polygon {
Parallelogram(Point tl, Point tr, Point bl){
Point br;
int num = tr.y-tl.y;
int denom = tr.x-tl.x;
br.x=denom+bl.x;
br.y=num+bl.y;
}
};
Parallelogram::Parallelogram(Point tl, Point tr, Point bl)
{
add(tl);
add(tr);
add(bl);
add(br);
};
编译时出现以下错误:
hw6pr2.cpp:15:1: error: redefinition of âParallelogram::Parallelogram(Point, Point, Point)â
hw6pr2.cpp:6:2: error: âParallelogram::Parallelogram(Point, Point, Point)â previously defined here
我的问题是:如果我从多边形类派生的方式正确吗?如果是这样,为什么我会收到此错误?
答案 0 :(得分:2)
您有Parallelogram::Parallelogram(Point, Point, Point)
的两个定义;一个在课堂内,一个在外面。您不能有多个函数定义。
假设add
为Polygon
添加了一个点,看起来你真的只想让第二个定义成为第一个定义的一部分。您可以在类中定义类似内容:
struct Parallelogram : public Polygon {
Parallelogram(Point tl, Point tr, Point bl) {
Point br;
int num = tr.y-tl.y;
int denom = tr.x-tl.x;
br.x=denom+bl.x;
br.y=num+bl.y;
add(tl);
add(tr);
add(bl);
add(br);
}
};
或者,您可以在类中声明它,然后在外部定义它:
struct Parallelogram : public Polygon {
Parallelogram(Point tl, Point tr, Point bl);
};
Parallelogram::Parallelogram(Point tl, Point tr, Point bl) {
Point br;
int num = tr.y-tl.y;
int denom = tr.x-tl.x;
br.x=denom+bl.x;
br.y=num+bl.y;
add(tl);
add(tr);
add(bl);
add(br);
}
答案 1 :(得分:0)
修复。 。 。
Parallelogram::AnyWordButParallelogram(Point tl, Point tr, Point bl)
{
add(tl);
add(tr);
...
如果你想在构造时调用该代码(我只能猜测)那么。 。
struct Parallelogram : public Polygon {
Parallelogram(Point tl, Point tr, Point bl){
...
AnyWordButParallelogram(Point tl, Point tr, Point bl)
}
确保在构造函数之前定义函数。