LINUX.ORG.RU

Перегрузка оператора

 


0

2

Не получаеться перегрузить оператор(перегруженый оператор не вызываеться)

class listNode
{
...
    const listNode &operator++(int) const;
}
const listNode &listNode::operator++(int) const{
    std::cout << "azaz";
}

class doubleLinkedList{
private:
    listNode *mFirst;
    listNode *mLast;
    listNode *mCurrent;
...
}
void doubleLinkedList::getAll(){
    mCurrent = mFirst;
    mCurrent++;
    mCurrent->data();
}

в mFirst данные есть, копируеться норм, только пергрузка не работает

★★

Последнее исправление: kachan (всего исправлений: 3)
Ответ на: комментарий от Shadow1251

это не странно, это говнокод ._.

kachan ★★
() автор топика
Ответ на: комментарий от Shadow1251

спасибо, теперь буду внимательней к указателям

kachan ★★
() автор топика
Ответ на: комментарий от kachan

Ой, и правда, указатель:)

Видишь ты и сам запутался, и двух человек запутал. Не надо делать инкремент, для чего то, что не будет потом мимикрировать под указатель или чиселко. Скорей всего и тот, кто будет твой код смотреть, не оценит.

pon4ik ★★★★★
()
Ответ на: комментарий от kachan

Никак.

Если тебе, так сильно хочется иметь такую семантику, ты можешь сделать умный указатель. Но я настоятельно рекомендую ознакомиться с концепцией итераторов, или переосмыслить её :)

Хотя, судя по названию классов, ты просто неправильно готовишь список. Ноды должны указывать на соседей и код обхода в прямом направлении должен выглядеть примерно так:

void doubleLinkedList::getAll(){
    
    for (nodeIt = mFirst; nodeIt != 0; it = nodeIt->mNext) {
        nodeIt->data();
    }
     
}

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

да, ноды правильно указывают, просто я сделал еще класс с разными типами данных и виртуальными методом(data())

kachan ★★
() автор топика
Ответ на: комментарий от pon4ik

Ты просто неправильно предлагаешь готовить последовательность в C++, при правильной готовке обход выглядит так:

for (auto&& n : list)

При этом такая последовательность будет работать со стандартными алгоритмами.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Да, только для такой готовки нужен итератор, а не то что у ТС.

pon4ik ★★★★★
()
Ответ на: комментарий от kachan

Речь не о том. Структура у тебя называется DoubleLinkedList, но ничего похожего на него я там не увидел.

pon4ik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.