Я пытаюсь написать код, который создает класс прямоугольника, а также создать два класса, которые сравнивают периметр и область двух прямоугольников и возвращают большую из двух. Я продолжаю получать ошибки, что ожидается «;» в тех местах, которые я не думаю, что они принадлежат. Какие-либо предложения?Rectangle Class и Templates C++
#include <cstdlib>
#include <iostream>
#include <vector>
#include <functional>
using namespace std;
template <typename Object, typename Comparator>
const Object & findMax(const vector<Object> & arr, Comparator isLessThan)
{
int maxIndex = 0;
for(int i = 1; i < arr.size(); ++i)
if(isLessThan(arr[ maxIndex], arr[ i ]))
maxIndex = i;
return arr[ maxIndex ];
}
class AreaComparator
{
public:
int compare(Rectangle lhs, Rectangle rhs) const
{ return double.compare(lhs.getArea(), rhs.getArea()); }
};
class PeriComparator
{
public:
int compare(Rectangle lhs, Rectangle rhs) const
{ return double.compare(lhs.getPerimeter(), rhs.getPerimeter()); }
};
class Rectangle
{
double length, width;
public:
Rectangle(double l, double w)
{
l = length;
w = width;
}
double getArea()
{
return length * width;
}
double getPerimeter()
{
return (2 * length) + (2 * width);
}
};
int main(int argc, char *argv[])
{
cout <<(findMax(new Rectangle[] { new Rectangle(1, 5), new Rectangle(2, 3) }, new AreaComparator())) << endl;
cout <<(findMax(new Rectangle[] { new Rectangle(1, 5), new Rectangle(2, 3) }, new PeriComparator())) << endl;
system("PAUSE");
delete Rectangle[];
delete AreaComparator[];
delete PeriComparator[];
return EXIT_SUCCESS;
}
Живой пример [здесь] (http://ideone.com/Kp54xt), похоже, что вам нужно прототип «Прямоугольник». Среди прочего ... много других вещей –
Операторы 'delete' полностью фиктивные, для начало. –
Также 'double.compare' не C++, вы исходите из C#? возможно, вы имеете в виду 'compare (...' –