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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В прямоугольной матрице NxK переставить столбцы в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread657642.html
проверьте прогу плз - В прямоугольной матрице NxK переставить столбцы в обратном порядке #include<stdio.h> #define N 3 #define K 8 int main(){ int mas={}; int mas t={0}; int i,j,s,t=0;...
C++ Определить количество байтов, которые занимают в памяти переменные данных типов Здравствуйте. Помогите пожалуйста с лабораторной... В языке С++ полный ноль, ничего не понимаю. Вот сами задания из лабы: 1. Опишите переменные всех типов, приведенных в таблице 2. Определите... http://www.cyberforum.ru/cpp-beginners/thread657631.html
Указатели в массиве C++
В книжке нет описания к данному коду и мне немного не понятно в некоторых моментах: 1). while (*p) { (не понятно какое условие понимается под *p) 2). while(*p!=' ' && *p) { (*p!= ' ' - это понятно,...
C++ Лаба по информатике
Завтра сдавать лабораторную, а я в программировании на Си++ практически ноль. Было всего пару лекций на его изучение. Задача: Составить программу нахождения периметра правильного n-угольника,...
C++ Локальные переменные в функции и её аргумент http://www.cyberforum.ru/cpp-beginners/thread657594.html
Привет! Пишу функцию перевода десятичного числа в текст (не обсуждайте зачем и правильно ли я делаю) Суть такова, начало функции: void printFixedPoint(char* buffer, float data, int sign){ float...
C++ Пифагоровы числа Помогите составить задачу, как на паскале приблизительно знаю. Задача: Найти 20 первых Пифагоровых чисел, k,m,n принадлежит N k^2+m^2=n^2 подробнее

Показать сообщение отдельно
kotleta
42 / 42 / 11
Регистрация: 13.09.2012
Сообщений: 196

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

25.09.2012, 11:21. Просмотров 404. Ответов 5
Метки (Все метки)

Не понимаю почему выдается ошибки, переменные а, b не объявлены в данном контексте (внутри функции f)
Сейчас почитал прату, и страуструпа, и не нашел объяснений
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <typename T>
class A
{
  public:
 
  int a;
  int b;
};
 
template <typename T> class B: public A <T>
{
 public:
 
  void f()
  {
   a=3; // error: a was not declared in this scope
   b=4;
  }
};

но если

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class A
{
 public:
  int a, b;
};
 
class B: A
{
 public:
 
  void f()
 {
  a=3;
  b=4; 
 }
};
работает

Т.е. если наследовании с шаблонами, то нет доступа к членам a,b
а если просто с классами, т.е. доступ из производных

update

ну и сейчас интуитивно попробовал сделать
C++
1
2
a <T> :: a = 3;
a <T> :: b = 4;
заработало

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