Задать вопрос
  • Как использовать объект-группу и итератор?

    @Koala-Punch Автор вопроса
    devalone: country сокращенное от "тип управления страны тобишь республика-монархия-королевство" (ну да, увы, Гуру имен....) потому и подумал что в производный класс "монархия" воткнуть список монархов (ну...как список, просто создавать там монархов и отправлять в единый list)

    Таки я на этом и остановился - добавить type , но какой ? Повторюсь, конкретно хотел запустить область,допустим, А и в ней монарх 5, область B в ней монарх 15. Что-то в таком ключе, но вот, увы, не могу с эти type что-то сообразить. Тогда так рассуждать в type я вгоню какой-нибудь номер области 1, 2 (А, В) соотвественно. Тогда запрос 1 выдать должен 5, но как он должен среагировать что мой созданный монарх "5" будет относиться именно к 1, а не 2 области или какой-либо другой ?
    country::Monarkh тоже "кушать" не хочет (нет члена, как и при попытке с group::M)
  • Как использовать объект-группу и итератор?

    @Koala-Punch Автор вопроса
    devalone: Так хорошо. Остальное порешыл для себя уже
    spoiler
    std::list<group*>		myGroup;
    	
    	//то что хочу вытянуть
    	myGroup.push_back(new Monarkh(5));
    	myGroup.push_back(new Monarkh(10));
    	myGroup.push_back(new Rome(125));
    	//некий излишек
    	myGroup.push_back(new kingdom(0));
    	myGroup.push_back(new northAmerica(0));
    for (auto group : myGroup) {
    		group->show();
    	}
    
    	for (auto group : myGroup) {
    		delete group;
    	}

    Иерархия классов у меня на приведенной мной картиночке. Суть в чем. Хотел я что б вывело мне всех монархов рима тобишь вывести дожно "5" и "10" (для тест int поле одно просто создал). Решил использовать по аналогии:
    group содержит только void show=0 и ~group (абстрактный класс)
    spoiler
    for (auto group : myGroup) {
    		group->show();
    		if (group->?_1 == group::Monarkh) { /* ?_1 что вставить под "type" ибо его "голое" использование приводит к естественной ошибке - класс group не содержит члена "type"
    ?_2 - group::Monarkh выдает что Monarkh не является членом group 
    Monarkh производный класс от country, но использование country::Monarkh так же ведет к ошибке. Что я тут упускаю ? */
    			std::cout << "Поймал монархов" << std::endl;
    			Monk *monk = static_cast<Monk *>(group);
    			monk->show();
    		}

    }
  • Как использовать объект-группу и итератор?

    @Koala-Punch Автор вопроса
    devalone: Ну да ладно, будем верить что пробьюсь теперь :) Спасибо Вам большое! Приятных снов (ну, по крайней мере я потопаю, для начала)
  • Как использовать объект-группу и итератор?

    @Koala-Punch Автор вопроса
    devalone: И,кажется, я признал в записи вашего цикла итератор с msdn и я так понял это аналог моего .begin .end просто "автоматом" смотрит всё. Тобишь, если думать по аналогии,
    вместо "bear->drinkVodkaWithRussianHuman();" я должен вызвать myObject->show();. Надеюсь, я правильно уловил
  • Как использовать объект-группу и итератор?

    @Koala-Punch Автор вопроса
    devalone: Ну вот давайте по картинке смотреть, справа есть "овальчик" из которого выходит 3. Я говорю про 1 из таких "вышедших" овальчика. Например, рассмотрим "евразию" в евразии есть некая страна А в которой тип управления РЕСПУБЛИКА (допустим) и *список правителей (путин-медведев-ельцин)*. Ну тобишь подразумеваю уже некую иерархию объектов
  • Как использовать объект-группу и итератор?

    @Koala-Punch Автор вопроса
    devalone: Да, Вы совершенно правы :) Просто проблема в том что найти я должен такой объект выходя из другого "большого" класса, как и то что их может быть >1 (допустим, список всех королей британии (условно так) )
  • Как использовать объект-группу и итератор?

    @Koala-Punch Автор вопроса
    Евгений Шатунов: Ну чтож, придется включить импровизацию и воткнуть картиночку :) (заодно заменил предметную область на более-менее внятную, потом просто по аналогии разберу) dc2f3778d9ec40e7a5f31d2172c7b818.png

    Слева есть тип и 3 класса, под "?" это то чем необходимо дополнить
  • Как использовать объект-группу и итератор?

    @Koala-Punch Автор вопроса
    devalone: Да, все верно. Она уже у меня реализована и работает :) А вопрос вот в чем (попробую перефразировать): Изначально у меня была иерархия классов такая:
    => class fruits : public food
    class food{}; => class berries : public food
    => class vegetables : public food
    И мне необходимо было ее дополнить (дополнил я при помощи:
    class color : public food{public: void show(void) const = 0;}; //2.)
    
    class red : public color{};
    class pink : public color{};
    class blue : public color{}

    А в задании есть пример где для объединения в 1 большое используют некий абстрактный класс и при его использовании иерахия превращается в такую:

    абстрактный класс] => (1.) производный food (из него вышло 3 berries vegetables fruits)
    => (2.) производный color (аналогично)
    И требуется вывести, например, все овощи красного цвета. Ну вот, вроде, попонятнее выразился :) А про итераторы и объект-группу в задании упоминается, но что-то почитал и не сообразил как перенести это сюда (учитывая что использовал первоначально для создания списка, как уже упомянул, std::list<...*> где содержал указатель на объекты класса)
  • Как создать связный список?

    @Koala-Punch Автор вопроса
    Mercury13: Решил проблему лаконично - превратил std::vector в std::list =)
  • Как создать связный список?

    @Koala-Punch Автор вопроса
    Mercury13: Единожды хватило :)
  • Как создать связный список?

    @Koala-Punch Автор вопроса
    Mercury13: Это, увы. знаю =) Нус...разберемся!) На крайний случай с list посижу !)
  • Как создать связный список?

    @Koala-Punch Автор вопроса
    https://pastebin.com/dkLNH3r3 ну вот я уже прицеплял свое "чудо-юдо". Пока решил проблему тем что собрал vector, но хотелось бы как-то с этими всякими "играми с указателем" т.е. current-ы всякие beg-end-ы. Но что-то этот момент не пошел от слова совсем. Думал по поводу всяких голов-next, но как-то не нашел куда прилепить и как. Изначально полагал что имелось ввиду (под вынестит static компонентну-данное в глобальную область) создать некий массив в духе statict *array
    array[n] = {*объекты моих классов*}
  • Как создать связный список?

    @Koala-Punch Автор вопроса
    AtomKrieg: Неа) Просто как хлебушек сделал нехорошую вещь https://pastebin.com/dkLNH3r3 , такие дела
  • Как создать связный список?

    @Koala-Punch Автор вопроса
    Полагаю что так, иных путей то не вижу. Думал что можно как-то собрать с этим "static var" массив(СС) из объектов разных классов
  • Как сложить 2 объекта одного класса?

    @Koala-Punch Автор вопроса
    fshp: А ведь действительно, спасибо! Видимо, надо для начала поспать :с
  • Как сложить 2 объекта одного класса?

    @Koala-Punch Автор вопроса
    fshp: Я так понимал это friend позволяет не конфликтовать с 3м параметров this потому и воткнул =) Ваш вариант *не знаю как под спойлер* >#include
    using namespace std;

    class myClass{
    public:
    int a; int b;
    public:
    friend myClass operator+(const myClass &A, const myClass &B);

    };

    myClass operator+(const myClass &A, const myClass &B){
    return myClass(A.a + B.a, A.b + B.b);
    }

    int main(){
    return 255;
    }<
    Выдает вот такие веселые штучки:
    [Error] no matching function for call to 'myClass::myClass(int, int)'
    Если исправить на:
    myClass myClass::operator+(const myClass &A, const myClass &B){
    то выдает туже проблему, с которой изначально столкнулся - 0/1 аргумент
    [Error] 'myClass myClass::operator+(const myClass&, const myClass&)' must take either zero or one argument
  • Как сложить 2 объекта одного класса?

    @Koala-Punch Автор вопроса
    Хорошо, значит свои поля (int a, b сделал public и теперь остается объявить их [т.к. голый класс и эта функция выдает что ab не объявлены] и доводить до ума) спасибо!!!
  • Как сложить 2 объекта одного класса?

    @Koala-Punch Автор вопроса
    Меня вот тоже осенило это, набросал такую штукенцию) А то сидел часа 3 так точку сверлил. Спасибо Вам!!!
    friend myClass operator + (const myClass &C){
    return test(a + C.a, b + C.b);
    }
  • Как решить задачу с массивом NxN?

    @Koala-Punch Автор вопроса
    Благодарствую вполне наглядно,только можно это как-то перевести в "детский" язык =) Как-то слишком сложно мне прям в такое писать,думаю (да и требуют), особо не изгаляться. А хоть идея и ясна знаний не особо что бы перепаять