Переопределение ошибки класса

Я разрабатываю программу, которая берет три заданные точки и вычисляет четвертую для создания параллелограмма. То, что я до сих пор это:

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

Решение

У вас есть два определения 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);
}
2

Другие решения

Исправить. , ,

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

Просто убедитесь, что функция определена перед конструктором.

0

По вопросам рекламы [email protected]