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

Наследование шаблонов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.70
Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
28.12.2011, 23:28     Наследование шаблонов #1
Есть некоторый класс first, реализованный по шаблону. Можно ли от него наследовать другой класс, сохраняя при этом шаблон?
Есть такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <class T>
class first
{
public:
    T value;
    first() { } 
};
 
template <class T>
class second : public first<T>
{
public:
    second() {  } 
    void SetValue(const T & val) { value = val; }
};
 
int main ()
{
    second<int> x;
    x.SetValue(10);
    printf("%i\n",x.value);
    return 0;
}
Он не работает. Ругается на строку void SetValue(const T & val) { value = val; }
"нет декларации «value» в этой области видимости"

Если же использовать следующий вариант второго класса, работает
C++
1
2
3
4
5
6
7
template <class T>
class second : public first<int>
{
public:
    second() {  } 
    void SetValue(const T & val) { value = val; }
};
Но при это теряется смысл использования шаблона для первого класса. Какой решить проблему?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2011, 23:28     Наследование шаблонов
Посмотрите здесь:

Каталог шаблонов C++
С++, создание шаблонов C++
C++ Наследование шаблонов и итераторы
C++ Наследование шаблонов
С++ использование шаблонов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
28.12.2011, 23:58     Наследование шаблонов #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
"Возможно компилер желает" this
C++
1
void SetValue(const T & val) { this->value = val; }
Jupiter
29.12.2011, 00:08
  #3

Не по теме:

Цитата Сообщение от xAtom Посмотреть сообщение
"Возможно компилер желает" this
ещё один повод всегда писать this при обращении к мемберам, хотя в 10-й студии код отрабатывает в отличии от последнего gcc/mingw

Питекантроп
 Аватар для Питекантроп
246 / 140 / 6
Регистрация: 14.06.2010
Сообщений: 340
29.12.2011, 00:17  [ТС]     Наследование шаблонов #4
Цитата Сообщение от xAtom Посмотреть сообщение
"Возможно компилер желает" this
Спасибо, компилятор желал именно this
Yandex
Объявления
29.12.2011, 00:17     Наследование шаблонов
Ответ Создать тему
Опции темы

Текущее время: 13:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru