gpt4 book ai didi

c++ - 类错误的重新定义

转载 作者:行者123 更新时间:2023-11-28 03:20:17 25 4
gpt4 key购买 nike

我正在设计一个程序,它取三个给定点并计算第四个点以创建一个平行四边形。到目前为止我所拥有的是:

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

我的问题是:我从多边形类派生的方式是否正确?如果是这样,为什么我会收到此错误?

最佳答案

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);
}

关于c++ - 类错误的重新定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15648849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com