Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.02.2018
Сообщений: 23

Как бы закончить сказку про Базовый класс, пару его Шаблонных детей и потерявшиеся переменные?

02.04.2020, 16:16. Показов 1075. Ответов 1

Студворк — интернет-сервис помощи студентам
Всем привет. Собственно, вопрос в коде. Понимаю что (может быть) это реализуемо через что-то такое

C++
1
auto getVal() {  decltype(my_var)  return my_var; }
но я пока только учусь на мага. может кто накидать кода/ссылок на то, где копать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
class Base
{
public:
    virtual std::string get_text() const = 0;
    virtual ~Base() {}
};
 
template <typename T>
class A : public Base
{
    std::string txt = "some txt A";
    T some_var;//переменная, которую хочу достать
public:
    virtual std::string get_text() const override { return text; }
    T get_v() const { return some_var; }
};
template <typename T>
class B : public Base
{
    std::string txt = "some txt B";
    T some_var;//переменная, которую хочу достать
public:
    virtual std::string get_text() const override { return text; }
    T get_v() const { return some_var; }
};
 
 
class AA 
{
    size_t counter =0;
    struct keep
    {
        size_t id;
        Base* obj;
        keep(size_t id, Base* obj) : id(id), obj(obj) {}
        Base* get_obj() { return obj; }
    };
    std::vector<keep*> vec;
public:
    void fill_smth(size_t size)
    {
        for (auto i = 0; i < size; ++i)
        {
            if (i % 2)
                vec.push_back(new keep(i, new A<int>()));
            else
                vec.push_back(new keep(i, new B<float>()));
        }
    }
    void printing() const
    {
        for (auto& it : vec)
        {
            it->obj->// как мне из этой строчки достать some_var ? 
        }
    }
};
 
void some_fill(size_t filling = 6) {
    AA tt;
    tt.fill_smth(filling);
 
    
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2020, 16:16
Ответы с готовыми решениями:

typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения
Вот код: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;typeinfo&gt; using...

Определить базовый класс и на его основе производные классы
Разработать консольную программу на языке С++, в которой необходимо определить базовый класс и на его основе производные классы. Кроме...

Создать базовый класс список и реализовать на его основе стек и очередь
2. Создать базовый класс список. Реализовать на базе списка стек и очередь с виртуальными функциями вставки и вытаскивания.

1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.04.2020, 20:19
Лучший ответ Сообщение было отмечено poulCpp как решение

Решение

Цитата Сообщение от poulCpp Посмотреть сообщение
it->obj->// как мне из этой строчки достать some_var ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Base
{
public:
    virtual std::string get_text() const = 0;
    virtual std::ostream &print(std::ostream &out) const = 0;
    virtual ~Base() {}
};
 
template <typename T>
class A : public Base
{
    std::string txt = "some txt A";
    T some_var;//переменная, которую хочу достать
public:
    virtual std::string get_text() const override { return text; }
    virtual std::ostream &print(std::ostream &out) const override
    {
        return out << some_var;
    }
 
    T get_v() const { return some_var; }
};
 
...............
void printing() const
{
    for (auto& it : vec)
        it->obj->print(std::cout) << ", "; // как мне из этой строчки достать some_var ? 
 
    std::cout << std::endl;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2020, 20:19
Помогаю со студенческими работами здесь

Абстрактный класс CGraphicsObject, его наследник - базовый класс CPoint, и класс - наследник от CPoint
Всем доброй ночи! Очень нужна помощь и по мере возможности разъяснения на темы: абстрактный класс в задании(что он из себя представляет и...

Задать базовый класс и классы-потомки на его основе, реализующие операции с данными
1. Задать базовый класс и классы-потомки на его основе, реализующие операции с данными, в соответствии с индивидуальным заданием. Если...

Класс: как обратиться к методу производного класса через итератор на базовый класс?
Есть абстрактный и два порожденных. Хочу создать например list&lt;Base*&gt; list1; затем добавляю себе в список: ...

Как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С
Всем привет, как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С ? class A { public: A(); ...

Как управлять наследниками через базовый класс
Всем привет)Есть вот одна проблема. Хочу управлять объекты через другие объекты. Допустим есть базовый класс class base { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru