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

внук родительского класса не может работать с полями дедовского класса; почему? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа со стеком http://www.cyberforum.ru/cpp-beginners/thread313836.html
Используя стек, проверить, является ли содержимое текстового файла правильной записью формулы следущего вида: <формула>::=<цифра>|(<формула><знак><формула>) <знак>::=+|-|* <имя>::=x | y |z...
C++ Подсчитать количество строк Доброго времени суток! Дано задание: В текстовом файле подсчитать количество строк, которые начинаются и оканчиваются одной и той же буквой,вывести эти строки и их количество в новый файл. Я... http://www.cyberforum.ru/cpp-beginners/thread313831.html
Нахождение в структуре одинаковых элементов C++
Задача довольно простая, не получается одна вещь - не знаю, чего то не до пру.. Сама задача: вводим структуру из 3 элементов Автор, книга, год - таких авторов с книгами тоже 3. Как только ввели...
C++ Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted
Добрый день подскажите что это означает и как исправить данное сообщение Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted #include <iostream> #include <locale> #include...
C++ Разработать программу, которая выводит, например, на экран следующую таблицу из введенных данных http://www.cyberforum.ru/cpp-beginners/thread313759.html
Примерное задание Разработать программу, которая выводит, например, на экран следующую таблицу из введенных данных:
C++ Защита от дураков В функцию добавления, нужно добавить защиту от дураков: void Newadd() { Abbase z2; system ("cls"); cout <<"Abbase 0.51 final"<<endl; cout <<"\n"<<endl; fstream fout("base.txt",... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,481

внук родительского класса не может работать с полями дедовского класса; почему? - C++

05.06.2011, 23:16. Просмотров 654. Ответов 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
class base {
 public:
 base (){};
 public:
  int g;
};
 
 
template <class T>
class sinn: public base {
 public:
  sinn () {};
};
 
 
template <class T>
class vnuk: public sinn<T> {
 public:
  vnuk () {};
  void vnuk_ () {g= 8;};
};
 
int main() {
}
Так, компилятор говорит, что он впервые видит переменную g; не помогает и:
C++
1
base::g= 8;
При чём обратите внимание, переменная g объявлена как public!
Ладно, а теперь я даже не знаю, в какую сторону и копать. Убираем все упоминания о шаблонах:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class base {
 public:
 base (){};
 protected:
  int g;
};
 
 
class sinn: public base {
 public:
  sinn () {};
};
 
 
class vnuk: public sinn {
 public:
  vnuk () {};
  void vnuk_ () {g= 8;};
};
 
 
int main() {
}
...Всё компилится. При чём g теперь protected
В общем, ребята, мне нужно, чтобы скомпилилось именго с шаблоами, а какое отношение они имеют к g я ума не приложу, спасибо заранее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru