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

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

17.09.2014, 14:50. Показов 1321. Ответов 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
13770 / 10963 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
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
13770 / 10963 / 6491
Регистрация: 18.12.2011
Сообщений: 29,240
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
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru