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

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

17.09.2014, 14:50. Показов 950. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2014, 14:50
Ответы с готовыми решениями:

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

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

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

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

5
Модератор
Эксперт С++
10531 / 8753 / 5293
Регистрация: 18.12.2011
Сообщений: 23,414
17.09.2014, 15:01 2
По моему так
C++
1
template someType* doing<someType>()
0
1 / 1 / 0
Регистрация: 29.01.2014
Сообщений: 30
17.09.2014, 15:12  [ТС] 3
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
2712 / 1879 / 556
Регистрация: 05.06.2014
Сообщений: 5,468
17.09.2014, 15:15 4
Допустим, есть абстрактный класс, и метод, который возвращает T-тип.
1) Где слово virtual в строчке с "=0"?
2) Разве виртуальные функции могут быть шаблоном?
1
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
17.09.2014, 15:24 5
valval, глупость у Вас получилась. Если бы так можно было бы делать, то...
В одной единице трансляции компилятор создал бы Aclass с одним набором виртуальных функций, а в другой единице трансляции -- с другим.
0
Модератор
Эксперт С++
10531 / 8753 / 5293
Регистрация: 18.12.2011
Сообщений: 23,414
17.09.2014, 15:25 6
У меня получилось вот так:
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2014, 15:25

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

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

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

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

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

Публичный абстрактный метод MakeSound без аргументов, возвращает string
Можно пример кода, что подходит под следующее описание: 1) Публичный абстрактный метод MakeSound...

Метод без проблем возвращает строку, но не возвращает класс
Здравствуйте! Уже сутки бьюсь с проблемой и не пойму вообще почему она возникла. Есть WCF-сервер и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.