C ++ оператор перегрузки, компилятор не видит оператор - PullRequest
0 голосов
/ 20 декабря 2018

CMagazin.h

class CMagazin
{
    char *m_nume;
    list<CProdus*>List_produse;
public:
    void printExpirabile( const char* data);
    ~CMagazin();
};

CMagazin.cpp

void CMagazin::printExpirabile(const char *xdata)
{
    list<CProdus*>::iterator it;
    for (it = List_produse.begin(); it != List_produse.end(); ++it)
    {
         CProdus* p = *it;
        if (p->get_tip()=='A')
        {
            **if (p > xdata)**->this problem

        }
    }
}

CAliment.h

class CAliment :
    public CProdus
{
    char *m_expirare;
public:
    bool operator >(const char*date);
    ~CAliment();    
};

CAliment.cpp

bool CAliment::operator>(const char * date)
{
    if (atoi(this->m_expirare) < atoi(date))
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

о ">" operator.in CMagazin.cpp не использует мой оператор ... мне нужна помощь.что я могу сделать? Мне нужно ">" в классе CMagazin.Класс CAliment это класс, производный от CProdus.

Ответы [ 2 ]

0 голосов
/ 17 января 2019

CProdus * p - указатель, необходим объект для использования этого оператора -> Try (* p)> xdata

  void CMagazin::printExpirabile(const char *xdata)
{
    list<CProdus*>::iterator it;
    for (it = List_produse.begin(); it != List_produse.end(); ++it)
    {
         CProdus* p = *it;
        if (p->get_tip()=='A')
        {
            if ((*p)>( xdata))-> make this!
                 {
                   p->print();
                 }
        }
    }
}
0 голосов
/ 21 декабря 2018

Ответ таков: в классе CProdus оператор должен быть объявлен виртуальным, а в CMagazin.cpp

        void CMagazin::printExpirabile(const char *xdata)
    {
        list<CProdus*>::iterator it;
        for (it = List_produse.begin(); it != List_produse.end(); ++it)
        {
             CProdus* p = *it;
            if (p->get_tip()=='A')
            {
                if (p->operator>( xdata))-> make this!
                     {
                       p->print();
                     }
            }
        }
    }
...