С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 29.01.2014
Сообщений: 30

Абстрактный класс. Виртуальный метод, который возвращает T- тип

17.09.2014, 14:50. Показов 1323. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!

Допустим, есть абстрактный класс, и метод, который возвращает T-тип.
C++
1
2
3
4
5
class A
{
public:
    template <class T> T* doing() = 0;
};
Как мне в наследниках реализовать метод и указать нужный возвращаемый тип(разный для всех наследников)
например:
C++
1
2
3
4
5
class B : public A
{
public:
    someType* doing() override {}
};
Реально ли это вообще?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2014, 14:50
Ответы с готовыми решениями:

Абстрактный класс «Клиент банка», имеющий виртуальный метод для вывода данных о клиенте
Создать абстрактный класс «Клиент банка», имеющий поля ФИО и адрес, а также метод, для вывода данные по клиенту. Дочерними классами...

Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния
Помогите пожалуйста, нужно написать код на с++ Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число...

Виртуальный абстрактный класс
Надеюсь мой вопрос будет не глупым. Есть класс исключений в пространстве имен std У него есть метод what Я создаю свой базовый класс...

5
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
17.09.2014, 15:01
По моему так
C++
1
template someType* doing<someType>()
0
1 / 1 / 0
Регистрация: 29.01.2014
Сообщений: 30
17.09.2014, 15:12  [ТС]
zss,
C++
1
2
3
4
5
6
7
8
9
10
11
class A
{
public:
    template <class T> T* doing() = 0;
};
 
class B : public A
{
public:
    template std::vector<int>* doing< std::vector<int> >() override {}
};
HTML5
1
2
error C2143: syntax error : missing ';' before '{'
error C2252: an explicit instantiation of a template can only occur at namespace scope
Даже если работает, то не в курсах, как его в .cpp файле реализовывать (синтаксис не ясен)
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
17.09.2014, 15:15
Допустим, есть абстрактный класс, и метод, который возвращает T-тип.
1) Где слово virtual в строчке с "=0"?
2) Разве виртуальные функции могут быть шаблоном?
1
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
17.09.2014, 15:24
valval, глупость у Вас получилась. Если бы так можно было бы делать, то...
В одной единице трансляции компилятор создал бы Aclass с одним набором виртуальных функций, а в другой единице трансляции -- с другим.
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
17.09.2014, 15:25
У меня получилось вот так:
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
#include <iostream>
#include <vector> 
using namespace std;
 
class A
{
public:
    template <class T> T* doing(){return 0;}
};
 
class B : public A
{
public:
    template <class T> T* doing();
};
template <class T> T* B::doing()
{
    T* x=new T;
    return x; 
}
int main()
{
    B* pb=new B;
    vector<int>* vi=pb->doing< vector<int> >();
    return 0;
}
Виртуальностью, конечно, тут и не пахнет!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.09.2014, 15:25
Помогаю со студенческими работами здесь

Виртуальный методы, абстрактный класс.
Здравствуйте. Теоретические вопросы. Что такое виртуальный методы и что такое абстрактный класс. Можете объяснить своими словами без...

Интерфейс, абстрактный класс, виртуальный метод, производные классы
Создать интерфейс с методом вычисления суммы прогрессии. Создать абстрактный базовый класс Series с виртуальным методом вычисления j-ого...

Создать абстрактный базовый класс "Животное", для которого определить виртуальный метод передвижения
1.Создать абстрактный базовый класс &quot;Животное&quot;, для которого определить виртуальный метод передвижения. 2. Создать производные классы...

Тип менее доступен чем метод который его возвращает
Здравствуйте. Сталкиваюсь не первый раз с такой ошибкой, убрать public не всегда удобно. В чем суть этой ошибки и какие ещё решения у неё...

Класс который принимает тип и возвращает коллекцию этого типа
Начал понемногу осваивать дженерики, и столкнулся с тем, что не осилил ) Ради эксперимента попробовал реализовать следущее - ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru