Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gorillych
14 / 14 / 1
Регистрация: 04.07.2013
Сообщений: 76
#1

Определение типа члена шаблонного класса - C++

13.07.2013, 21:24. Просмотров 570. Ответов 2
Метки нет (Все метки)

Такая проблема. Есть шаблонный класс с членом - указателем, тип которого должен определяться в зависимости от параметра шаблона:
C++
1
2
3
4
5
6
template<typename Type>
class MyClass
{
public:
    undefined_type *ptr;//Тип указателя зависит от Type: если float, то undefined_type=SomeType1, если double, то  undefined_type=SomeType2
};
Я представляю реализацию как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
Template<typename Type>
class MyClass
{
public:
    void *ptr;
    MyClass()
    {
      if(typeid(T)==typeid(float)) ptr = reinterpret_cast<SomeType1*>(ptr);
      else if(typeid(T)==typeid(double)) ptr = reinterpret_cast<SomeType2*>(ptr);
    }
};
Но мне кажется это не совсем правильно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2013, 21:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определение типа члена шаблонного класса (C++):

Инициализация статического члена из шаблонного класса - C++
Добрый день. Есть код: template&lt;int test&gt; class Test { template&lt;int a&gt; struct Inner { static bool...

Объявление и определение шаблонного класса - C++
Добрый вечер, мастера :) Почему данный код вызывает проблемы у компилятора? // class.h template &lt;typename T&gt; class Name { ...

Определение методов шаблонного класса - C++
Столкнулся с такой проблемой, реализовываю итератор для шаблонного списка, при определении метода интератора вылетает ошибка вот лог : ...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? - C++
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); } template &lt;class T&gt; void...

Определение методов шаблонного класса в файле реализации - C++
Доброго времени суток, форумчане! :) Поздравляю всех мужчин с праздником. Желаю быть мужественными, стойкими, рассудительными и...

Перегрузка оператора шаблонного класса в зависимости от типа - C++
Как заставить шаблон различать тип переменной которую ему передают? Пробую определить через type_traits, но не выходит - не компилируется....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.07.2013, 21:31 #2
читайте про специализацию шаблонов.
и вам уже дали ещё одно решение тут
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,214
Записей в блоге: 3
Завершенные тесты: 1
13.07.2013, 21:32 #3
а такой вариант?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template < typename T >
struct sub_obj{
    typedef T undefined_type;
};
 
template <>
struct sub_obj<float>{
    typedef short undefined_type;
};
 
template <>
struct sub_obj<double>{
    typedef unsigned char undefined_type;
};
 
 
template<typename Type>
class MyClass
{
public:
    typename sub_obj<Type>::undefined_type *ptr;//Тип указателя зависит от Type: если float, то undefined_type=SomeType1, если double, то  undefined_type=SomeType2
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2013, 21:32
Привет! Вот еще темы с ответами:

Хранение вектора экземпляров шаблонного класса неизвестного типа - C++
Здравствуйте! Потребовалось хранить вектор экземпляров шаблонного класса неизвестного типа. Для выделения фиксированного шаблона с...

Определение члена класса - C++
Выдает ошибку типа оператор += не является членом класса Distance. ни могу понять include &lt;iostream&gt; using namespace std; ...

Различное поведение конструктора шаблонного класса в зависимости от типа параметра - C++
Здравствуйте. Возникла проблема - при попытке изменить поведение конструктора шаблонного класса (структуры) в зависимости от типа...

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


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

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

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