803 / 530 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
1

Шаблоны классов, наследование и использование this

14.09.2017, 18:45. Показов 1578. Ответов 5
Метки нет (Все метки)

Привет, есть такой код:
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>
 
template <typename T>
struct B
{
    void exit();
};
 
template <typename T>
struct D : B<T>
{
    void fn()
    {
        exit();
    }
};
 
int main()
{
    D<int>{}.fn();
    system("pause");
}
 
template <typename T>
void B<T>::exit()
{   }
Автор этого кода пишет, что в теле функции D<T>::fn в ходе процесса разрешения имени exit функция D<T>::exit никогда не будет рассматриваться,
следовательно должна возникнуть ошибка, т.к. имя exit не объявлено.

Но данный код корректно выполняется у меня. Подскажите, это что-то в стандарте новое добавилось касательно этого?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2017, 18:45
Ответы с готовыми решениями:

Наследование, шаблоны классов
Все привет. Есть два шаблона классов, один наследует другой. Первый класс абстрактный, содержит...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг...

Наследование классов и использование конструкторов
Привет всем. У меня есть код, который нужно дополнить. class Skript { public: ...

Наследование классов, использование методов
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

5
16085 / 8686 / 2121
Регистрация: 30.01.2014
Сообщений: 14,972
14.09.2017, 19:02 2
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Но данный код корректно выполняется у меня.
VS поди?

Цитата Сообщение от Ferrari F1 Посмотреть сообщение
это что-то в стандарте новое добавилось касательно этого?
Нет. Это VS халтурит.
Кстати: https://blogs.msdn.microsoft.c... s-to-msvc/
Не прошло, как говорится, и 20 лет.
1
803 / 530 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
14.09.2017, 19:03  [ТС] 3
Цитата Сообщение от DrOffset Посмотреть сообщение
VS поди?
да)
0
Любитель чаепитий
3726 / 1786 / 561
Регистрация: 24.08.2014
Сообщений: 5,983
Записей в блоге: 1
14.09.2017, 19:05 4
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Но данный код корректно выполняется у меня.
в VS работает потому, что там, видимо, есть нестандартное расширение, либо там есть такая функция в глобальном пространстве имён.
в gcc не работает, в clang'e тоже.
0
16085 / 8686 / 2121
Регистрация: 30.01.2014
Сообщений: 14,972
14.09.2017, 19:39 5
Цитата Сообщение от GbaLog- Посмотреть сообщение
есть нестандартное расширение
См. ссылку выше. У них это просто не реализовано было. Хотя многим было по нраву такое поведение.
0
Croessmah
14.09.2017, 19:49     Шаблоны классов, наследование и использование this
  #6

Не по теме:

DrOffset, ой, они же еще обещали сделать плюшку с выбором нужного стандарта, как -std=c++14.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2017, 19:49

как сильно влияет наследование классов и вообще их использование на скорость программы?
написал для большей наглядности базовый класс для таблицы, унаследовал его в других классах......

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс...

Заменить наследование классов на наследование интерфейсов
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int...

Шаблоны классов (умножение классов)
Прошу помочь, нужно создать шаблон для умножения значений 2-х классов. Умножить классы просто...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru