Передача поля/метода класса

141
29 января 2021, 14:30

Существует класс Realty в котором экземпляры Apartment и вектор с объектами catalog. Метод price_filter должен фильтровать объекты по переменной price. Как мне передать это поле каждого объекта для обработки в методе?

void price_filter()
{
    for (int i = 0; i < catalog.size(); i++)
    {
        if (//тут-> getPrice[i]// >= a && // и тут->  getPrice[i]// <= b)
        {
            //
        }
    }
} 

в джаве это выглядело бы следующим образом:

void price_filter(Realty o)
{
    for (int i = 0; i < catalog.size(); i++)
    {
        if (o.getPrice(i) >= a && o.getPrice(i) <= b)
        {
            //
        }
    }
}

Ошибка: Severity Code Description Project File Line Suppression State Error C3867 'Realty::getPrice': non-standard syntax; use '&' to create a pointer to member Buildings F:\VS_Workspace\Buildings\Buildings\Buildings\Buildings.cpp 104

Весь код:

using namespace std;
class Realty
{
    string location;
    int area;
    int count_of_rooms;
    int price;
public:
    Realty(int area, int count_of_rooms, string location, int price)
    {
        this->area = area;
        this->count_of_rooms = count_of_rooms;
        this->location = location;
        this->price = price;
    }
    int getArea()
    {
        return area;
    }
    int getCount_of_rooms()
    {
        return count_of_rooms;
    }
    string getLocation()
    {
        return location;
    }
    int getPrice()
    {
        return price;
    }
};
class Apartment : public Realty
{
    int floor;
    bool renovation;
public:
    Apartment(int floor, int area, int count_of_rooms, string location, bool renovation, int price) : Realty(area, count_of_rooms, location, price)
    {
        this->floor = floor;
        this->renovation = renovation;
    }
};
class Realtor
{
    std::vector <Realty*> catalog;
private:
    int a, b;
public:
    void setRange(int a, int b)
    {
        this->a = a;
        this->b = b;
    }
    void add_realty(Realty* o)
    {
        catalog.push_back(o);
    };
    void price_filter(Realty o)
    {
        for (int i = 0; i < catalog.size(); i++)
        {
            if (o.getPrice[i] >= a && o.getPrice[i] <= b)
            {
                //
            }
        }
    }
};
int main()
{
    int a, b;
    int enter;
    Realtor r;
    Apartment* ap1 = new Apartment(3, 400, 2, "Warszawa, Ursynów", true, 60000);
    Apartment* ap2 = new Apartment(3, 400, 2, "Warszawa, Ursynów", true, 100000);
    Apartment* ap3 = new Apartment(3, 400, 2, "Warszawa, Ursynów", true, 30000);
    Apartment* ap4 = new Apartment(3, 400, 2, "Warszawa, Ursynów", true, 70000);
    r.add_realty(ap1);
    cout << "Wybierz opcje" << endl; cin >> enter;
    if (enter == 1)
    {
        cout << "filter cen od i do " << endl;
        cout << "Wprowadz od" << endl;
        cin >> a;
        cout << "Wprowadz do" << endl;
        cin >> b;
        r.setRange(a, b);
    }
}
Answer 1
void price_filter()
{
    for (int i = 0; i < catalog.size(); i++)
    {
        if (catalog[i]->getPrice() && catalog[i]->getPrice() <= b)
        {
            // ....
        }
    }
}
READ ALSO
Ошибка при вводе. Структуры C++

Ошибка при вводе. Структуры C++

Необработанное исключение по адресу 0x00007FF86C6A8028 (ucrtbasedll) в Project1

385
Ошибка в подключении jQuery

Ошибка в подключении jQuery

Хотел подключить jQuery, но выдает массу ошибок, как исправить не знаю ,скрины прилагаю:

133
Как выровнять input по центру?

Как выровнять input по центру?

не получается выровнять по центру формуУже всё попробовал

155
Размер кастомных иконок спиков css

Размер кастомных иконок спиков css

Существует некий список, в котором обязательно нужны кастомные иконки, сделал их через list-style-image: url(/img/gearwheel

137