Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Jovanna avatar Jovanna 186 Точки

C++ Advanced task04_05 - Lectures - Проблем с форийч-а

Здравейте,

защо при положение че имам в класа Lecture разлисани операторите .begin() и .end()  не иска да работи кода на for-each-a от main() ?

(Класът ми има едно поле: сет от Resource)

    std::set<Resource>::iterator begin(const Lecture& lect) {
            return (this->dataSetResources).begin();
        }
        std::set<Resource>::iterator end(const Lecture& lect) {
            return this->dataSetResources.end();
        }

Поздрави!

Тагове:
0
C++ Programming
Jovanna avatar Jovanna 186 Точки

Благодаря! 

но нали с форийч-а итерираме обект от тип Lecture,  според мен, компилаторът би трябвало да търси .begin() на контейнер с обекти от тип Lecture. A в случая на форийча му подаваме само един обектм а не контейнер с обекти. Това възможно ли е? Въпреки това, логично е да търси .begin() и .end() от  тип Lecture? Или бъркам?

2/И, имаме ли гаранция , че заделената памет за контейнер с един обект от тип Lecture e == на заделената памет за обект от тип Lecture;

3/Също, заделената памет за един set  == ли е на заделената памет за обект, който има поле същия този сет?

 Поздрави!

0
MartinBG avatar MartinBG 4803 Точки

Foreach-a работи с итератори и не го интересува към какви обекти сочат те. Типа на обектите не е задължително да съвпада с типа на класа, в който са дефинирани begin() и end() методите.

С други думи - няма значение в какъв обект (в случая е Lecture) се намира колекцията (vector<Resource>), която се итерира, важни са единствено итераторите, които този обект подава чрез begin() и end() методите си към foreach-a.

0
03/10/2018 23:31:22
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.