C++ Advanced - 04. Advanced C++ Class Members - Task 4 - Resources
Здравейте, някой може ли да хвърли малко светлина върху енумерациите, по точно как да въведем стойност. От main-а разбирам, че r.type e ResourceType, но при следния метод:
istream& operator>>(istream& In, Resource& r)
{
return In >> r.id >> r.type >> r.link;
}
получавам грешка: no match for 'operator>>' (operand types are 'std::basic_istream<char>::__istream_type {aka std::basic_istream<char>}' and 'SoftUni::ResourceType')
Как да въведа полето тогава? Явно тези неща са ми минали покрай ушите и са си заминали ;D. Ще съм благодарна ако някой ми разясни.
Здравей, опитах и така, но ми изкарва друга грешка: no match for 'operator<' (operand types are 'const SoftUni::Resource' and 'const SoftUni::Resource')
Предполагам, че грешката е при този запис:
void operator>>(istream& In, Resource& r)
{
string t;
In >> r.id >> t >> r.link;
if(t == "Presentation")
{
r.type = PRESENTATION;
}
else if(t == "Demo")
{
r.type = DEMO;
}
else
{
r.type = VIDEO;
}
}
Въобще нещо ми се губи при работата с енумерации. Би ли ми казал, в коя лекция се споменават, за да си припомня.
Този код ми изглежда верен, грешката, която ти дава, не е за operator<<, а за operator<, който най-вероятно overload-ваш за да можеш да добавяш Resource обекти в set.
И това, което ти казва, е че параметрите на operator< трябва да са const обекти (или const референции) за да може да го ползва set-а (най-вероятно си забравила да напишеш const пред един от двата параметъра). Може да погледнеш последните слайдове на лекцията, там имаше quick quiz точно за тази ситуация.
Иначе за enum говорихме в последната лекция на C++ Fundamentals, тази за класове и обекти, в първите слайдове - но не сме задълбочавали много. Като цяло ми се струва, че ги разбираш достатъчно добре, но прегледай отново ако искаш.
Много благодаря! Направо ме е срам каква нелепа грешка съм направила и си блъскам няколко часа главата. Но така е като пиша код между задачите по математика и анализа на античната драма.