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

Частое использование dynamic_cast в конкретных целях. Правильно ли? - C++

Восстановить пароль Регистрация
 
 
anonym17
2 / 0 / 1
Регистрация: 31.10.2013
Сообщений: 21
08.01.2014, 22:44     Частое использование dynamic_cast в конкретных целях. Правильно ли? #1
Привет, форум.
Гуманно ли использовать dynamic_cast вот в таких случаях?
Пример из подобных

- Есть библиотечный абстрактный класс Drawable.
Я наследую его, чтобы создавать разные геометрические объекты.
- Есть класс Polygon - используется как сцена. У него есть поле list<Drawable*> m_drawables и метод Add(Drawable* drawable).
Суть метода Add в том, что он рассчитывает наилучшую позицию для расположения фигуры и кидает его в полигон, т.е, записывает в m_drawables.

Не по теме:

Метод Update циклом прокручивает эти объекты, шагом вызывая метод api.Draw(*it)



Так вот, так как для разных фигур нужны разные расчёты, а я узнаю тип фигуры приведением типа(заодно и получаю доступы к методам конкретной фигуры) используя dynamic_cast.
Пример:
C++
1
2
3
4
5
6
7
8
9
void Add(Drawable* drawable)
{
...
    if (Parallelogram* pg = dynamic_cast<Parallelogram*>(drawable))
    {
        ...
    }
...
}
Это нормально или есть более лучший архитектурный подход?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 22:44     Частое использование dynamic_cast в конкретных целях. Правильно ли?
Посмотрите здесь:

dynamic_cast C++
C++ MS VC++ 6.0:Как "подавить" выдачу конкретных варнингов в конкретных местах?
dynamic_cast C++
Наследование, dynamic_cast и использование последнего в связке с первым C++
dynamic_cast() шаблон C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14217 / 6232 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 1
09.01.2014, 16:07     Частое использование dynamic_cast в конкретных целях. Правильно ли? #21
Вот во что превращается один-единственный вызов dynamic_cast
(VC++2010SP1, Win32/Release, Оптимизация на максимум):

Кликните здесь для просмотра всего текста


Исходная строка:
C++
1
bool const Status = (NULL != dynamic_cast<derived *>(p));
derived - это пустая структура, унаследованная от такой же пустой base с
виртуальным деструктором.

Заглянем в место вызова (сгенерированный ассемблерный код):
Assembler
1
2
3
4
5
6
7
8
9
0038104C  push        0  
0038104E  push        offset derived `RTTI Type Descriptor' (389C04h)  
00381053  push        offset base `RTTI Type Descriptor' (389BF0h)  
00381058  push        0  
0038105A  push        esi  
0038105B  call        __RTDynamicCast (385CA0h)  
00381060  add         esp,14h  
00381063  test        eax,eax  
00381065  setne       bl
__RTDynamicCast:
Assembler
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
00385CA0  push        24h  
00385CA2  push        offset __TI2?AVbad_cast@std@@+14h (388650h)  
00385CA7  call        __SEH_prolog4 (382B30h)  
00385CAC  mov         esi,dword ptr [ebp+8]  
00385CAF  test        esi,esi  
00385CB1  jne         __RTDynamicCast+1Bh (385CBBh)  
00385CB3  xor         eax,eax  
00385CB5  call        __SEH_epilog4 (382B75h)  
00385CBA  ret  
00385CBB  and         dword ptr [ebp-4],0  
00385CBF  mov         ecx,esi  
00385CC1  call        FindCompleteObject (385A08h)  
00385CC6  mov         edx,eax  
00385CC8  mov         dword ptr [ebp-1Ch],edx  
00385CCB  mov         eax,dword ptr [esi]  
00385CCD  mov         eax,dword ptr [eax-4]  
00385CD0  sub         esi,dword ptr [ebp+0Ch]  
00385CD3  sub         esi,edx  
00385CD5  mov         ecx,dword ptr [eax+10h]  
00385CD8  mov         ecx,dword ptr [ecx+4]  
00385CDB  test        cl,1  
00385CDE  jne         __RTDynamicCast+0AEh (385D4Eh)  
00385CE0  mov         eax,dword ptr [eax+10h]  
00385CE3  mov         edi,dword ptr [eax+0Ch]  
00385CE6  mov         eax,dword ptr [eax+8]  
00385CE9  mov         dword ptr [ebp+8],eax  
00385CEC  xor         esi,esi  
00385CEE  mov         dword ptr [ebp-24h],esi  
00385CF1  cmp         esi,dword ptr [ebp+8]  
00385CF4  jae         __RTDynamicCast+0AAh (385D4Ah)  
00385CF6  mov         ebx,dword ptr [edi+esi*4]  
00385CF9  mov         eax,dword ptr [ebx]  
00385CFB  mov         ecx,dword ptr [ebp+14h]  
00385CFE  cmp         eax,ecx  
00385D00  je          __RTDynamicCast+78h (385D18h)  
00385D02  add         ecx,8  
00385D05  push        ecx  
00385D06  add         eax,8  
00385D09  push        eax  
00385D0A  call        strcmp (3814E0h)  
00385D0F  pop         ecx  
00385D10  pop         ecx  
00385D11  test        eax,eax  
00385D13  je          __RTDynamicCast+78h (385D18h)  
00385D15  inc         esi  
00385D16  jmp         __RTDynamicCast+4Eh (385CEEh)  
00385D18  inc         esi  
00385D19  mov         dword ptr [ebp-28h],esi  
00385D1C  cmp         esi,dword ptr [ebp+8]  
00385D1F  jae         __RTDynamicCast+0ECh (385D8Ch)  
00385D21  mov         eax,dword ptr [edi+esi*4]  
00385D24  test        byte ptr [eax+14h],4  
00385D28  jne         __RTDynamicCast+0ECh (385D8Ch)  
00385D2A  mov         eax,dword ptr [eax]  
00385D2C  mov         ecx,dword ptr [ebp+10h]  
00385D2F  cmp         eax,ecx  
00385D31  je          __RTDynamicCast+0A6h (385D46h)  
00385D33  add         ecx,8  
00385D36  push        ecx  
00385D37  add         eax,8  
00385D3A  push        eax  
00385D3B  call        strcmp (3814E0h)  
00385D40  pop         ecx  
00385D41  pop         ecx  
00385D42  test        eax,eax  
00385D44  jne         __RTDynamicCast+78h (385D18h)  
00385D46  mov         eax,ebx  
00385D48  jmp         __RTDynamicCast+0CAh (385D6Ah)  
00385D4A  xor         eax,eax  
00385D4C  jmp         __RTDynamicCast+0CAh (385D6Ah)  
00385D4E  push        dword ptr [ebp+14h]  
00385D51  push        esi  
00385D52  push        dword ptr [ebp+10h]  
00385D55  push        edx  
00385D56  test        cl,2  
00385D59  jne         __RTDynamicCast+0C2h (385D62h)  
00385D5B  call        FindMITargetTypeInstance (385A42h)  
00385D60  jmp         __RTDynamicCast+0C7h (385D67h)  
00385D62  call        FindVITargetTypeInstance (385B4Ah)  
00385D67  add         esp,10h  
00385D6A  test        eax,eax  
00385D6C  je          __RTDynamicCast+0ECh (385D8Ch)  
00385D6E  add         eax,8  
00385D71  push        dword ptr [ebp-1Ch]  
00385D74  call        PMDtoOffset (385A1Eh)  
00385D79  pop         ecx  
00385D7A  add         eax,dword ptr [ebp-1Ch]  
00385D7D  mov         dword ptr [ebp-20h],eax  
00385D80  mov         dword ptr [ebp-4],0FFFFFFFEh  
00385D87  jmp         __RTDynamicCast+15h (385CB5h)  
00385D8C  xor         eax,eax  
00385D8E  mov         dword ptr [ebp-20h],eax  
00385D91  cmp         dword ptr [ebp+18h],eax  
00385D94  je          __RTDynamicCast+0E0h (385D80h)  
00385D96  push        offset string "Bad dynamic_cast!" (388084h)  
00385D9B  lea         ecx,[ebp-34h]  
00385D9E  call        std::bad_cast::bad_cast (38164Ch)  
00385DA3  push        offset __TI2?AVbad_cast@std@@ (38863Ch)  
00385DA8  lea         eax,[ebp-34h]  
00385DAB  push        eax  
00385DAC  call        _CxxThrowException (381958h)  
00385DB1  mov         eax,dword ptr [ebp-14h]  
00385DB4  mov         eax,dword ptr [eax]  
00385DB6  mov         eax,dword ptr [eax]  
00385DB8  xor         ecx,ecx  
00385DBA  cmp         eax,0C0000005h  
00385DBF  sete        cl  
00385DC2  mov         eax,ecx  
$LN34:
00385DC4  ret  
$LN14:
00385DC5  mov         esp,dword ptr [ebp-18h]  
00385DC8  and         dword ptr [ebp-20h],0  
00385DCC  push        offset string "Access violation - no RTTI data!"... (388060h)  
00385DD1  lea         ecx,[ebp-34h]  
00385DD4  call        std::__non_rtti_object::__non_rtti_object (381688h)  
00385DD9  push        offset __TI3?AV__non_rtti_object@std@@ (3885E4h)  
00385DDE  jmp         __RTDynamicCast+108h (385DA8h)
FindMITargetTypeInstance:
Assembler
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
00385A42  mov         edi,edi  
00385A44  push        ebp  
00385A45  mov         ebp,esp  
00385A47  sub         esp,14h  
00385A4A  mov         eax,dword ptr [eax+10h]  
00385A4D  or          dword ptr [ebp-8],0FFFFFFFFh  
00385A51  push        ebx  
00385A52  mov         ebx,dword ptr [eax+8]  
00385A55  xor         ecx,ecx  
00385A57  push        esi  
00385A58  push        edi  
00385A59  mov         edi,dword ptr [eax+0Ch]  
00385A5C  mov         dword ptr [ebp-10h],ecx  
00385A5F  mov         dword ptr [ebp-14h],ecx  
00385A62  mov         dword ptr [ebp-0Ch],ecx  
00385A65  mov         dword ptr [ebp-4],ecx  
00385A68  cmp         ebx,ecx  
00385A6A  jbe         FindMITargetTypeInstance+101h (385B43h)  
00385A70  mov         eax,dword ptr [ebp-4]  
00385A73  mov         esi,dword ptr [edi+eax*4]  
00385A76  sub         eax,dword ptr [ebp-8]  
00385A79  cmp         eax,dword ptr [ebp-0Ch]  
00385A7C  jbe         FindMITargetTypeInstance+6Eh (385AB0h)  
00385A7E  mov         eax,dword ptr [esi]  
00385A80  mov         ecx,dword ptr [ebp+14h]  
00385A83  cmp         eax,ecx  
00385A85  je          FindMITargetTypeInstance+58h (385A9Ah)  
00385A87  add         ecx,8  
00385A8A  push        ecx  
00385A8B  add         eax,8  
00385A8E  push        eax  
00385A8F  call        strcmp (3814E0h)  
00385A94  pop         ecx  
00385A95  pop         ecx  
00385A96  test        eax,eax  
00385A98  jne         FindMITargetTypeInstance+6Eh (385AB0h)  
00385A9A  mov         eax,dword ptr [ebp-14h]  
00385A9D  test        eax,eax  
00385A9F  jne         FindMITargetTypeInstance+0AFh (385AF1h)  
00385AA1  mov         eax,dword ptr [ebp-4]  
00385AA4  mov         dword ptr [ebp-8],eax  
00385AA7  mov         eax,dword ptr [esi+4]  
00385AAA  mov         dword ptr [ebp-10h],esi  
00385AAD  mov         dword ptr [ebp-0Ch],eax  
00385AB0  mov         eax,dword ptr [esi]  
00385AB2  mov         ecx,dword ptr [ebp+0Ch]  
00385AB5  cmp         eax,ecx  
00385AB7  je          FindMITargetTypeInstance+8Ah (385ACCh)  
00385AB9  add         ecx,8  
00385ABC  push        ecx  
00385ABD  add         eax,8  
00385AC0  push        eax  
00385AC1  call        strcmp (3814E0h)  
00385AC6  pop         ecx  
00385AC7  pop         ecx  
00385AC8  test        eax,eax  
00385ACA  jne         FindMITargetTypeInstance+0A5h (385AE7h)  
00385ACC  push        dword ptr [ebp+8]  
00385ACF  lea         eax,[esi+8]  
00385AD2  call        PMDtoOffset (385A1Eh)  
00385AD7  pop         ecx  
00385AD8  cmp         eax,dword ptr [ebp+10h]  
00385ADB  jne         FindMITargetTypeInstance+0A5h (385AE7h)  
00385ADD  mov         ecx,dword ptr [ebp-10h]  
00385AE0  test        ecx,ecx  
00385AE2  jne         FindMITargetTypeInstance+0BFh (385B01h)  
00385AE4  mov         dword ptr [ebp-14h],esi  
00385AE7  inc         dword ptr [ebp-4]  
00385AEA  cmp         dword ptr [ebp-4],ebx  
00385AED  jb          FindMITargetTypeInstance+2Eh (385A70h)  
00385AEF  jmp         FindMITargetTypeInstance+101h (385B43h)  
00385AF1  test        byte ptr [esi+14h],3  
00385AF5  jne         FindMITargetTypeInstance+101h (385B43h)  
00385AF7  test        byte ptr [eax+14h],1  
00385AFB  jne         FindMITargetTypeInstance+101h (385B43h)  
00385AFD  mov         eax,esi  
00385AFF  jmp         FindMITargetTypeInstance+103h (385B45h)  
00385B01  mov         eax,dword ptr [ebp-4]  
00385B04  sub         eax,dword ptr [ebp-8]  
00385B07  cmp         eax,dword ptr [ebp-0Ch]  
00385B0A  ja          FindMITargetTypeInstance+0FBh (385B3Dh)  
00385B0C  test        byte ptr [ecx+14h],40h  
00385B10  jne         FindMITargetTypeInstance+0E0h (385B22h)  
00385B12  cmp         dword ptr [ebp-8],0  
00385B16  jne         FindMITargetTypeInstance+0DCh (385B1Eh)  
00385B18  test        byte ptr [esi+14h],1  
00385B1C  jne         FindMITargetTypeInstance+101h (385B43h)  
00385B1E  mov         eax,ecx  
00385B20  jmp         FindMITargetTypeInstance+103h (385B45h)  
00385B22  mov         edx,dword ptr [ecx+18h]  
00385B25  mov         edx,dword ptr [edx+0Ch]  
00385B28  mov         eax,dword ptr [edx+eax*4]  
00385B2B  mov         al,byte ptr [eax+14h]  
00385B2E  and         al,1  
00385B30  movzx       eax,al  
00385B33  neg         eax  
00385B35  sbb         eax,eax  
00385B37  not         eax  
00385B39  and         eax,ecx  
00385B3B  jmp         FindMITargetTypeInstance+103h (385B45h)  
00385B3D  test        byte ptr [ecx+14h],3  
00385B41  je          FindMITargetTypeInstance+0D6h (385B18h)  
00385B43  xor         eax,eax  
00385B45  pop         edi  
00385B46  pop         esi  
00385B47  pop         ebx  
00385B48  leave  
00385B49  ret
FindVITargetTypeInstance:
Assembler
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
00385B4A  mov         edi,edi  
00385B4C  push        ebp  
00385B4D  mov         ebp,esp  
00385B4F  sub         esp,24h  
00385B52  mov         eax,dword ptr [eax+10h]  
00385B55  mov         ecx,dword ptr [eax+0Ch]  
00385B58  or          dword ptr [ebp-0Ch],0FFFFFFFFh  
00385B5C  or          dword ptr [ebp-18h],0FFFFFFFFh  
00385B60  push        ebx  
00385B61  mov         ebx,dword ptr [eax+8]  
00385B64  push        esi  
00385B65  push        edi  
00385B66  xor         edi,edi  
00385B68  mov         dword ptr [ebp-14h],edi  
00385B6B  mov         dword ptr [ebp-1Ch],edi  
00385B6E  mov         dword ptr [ebp-20h],edi  
00385B71  mov         dword ptr [ebp-24h],ecx  
00385B74  mov         dword ptr [ebp-10h],edi  
00385B77  mov         byte ptr [ebp-1],1  
00385B7B  mov         dword ptr [ebp-8],edi  
00385B7E  cmp         ebx,edi  
00385B80  jbe         FindVITargetTypeInstance+14Fh (385C99h)  
00385B86  mov         eax,dword ptr [ebp-8]  
00385B89  mov         ecx,dword ptr [ebp-24h]  
00385B8C  mov         esi,dword ptr [ecx+eax*4]  
00385B8F  sub         eax,dword ptr [ebp-0Ch]  
00385B92  cmp         eax,dword ptr [ebp-10h]  
00385B95  jbe         FindVITargetTypeInstance+80h (385BCAh)  
00385B97  mov         eax,dword ptr [esi]  
00385B99  mov         ecx,dword ptr [ebp+14h]  
00385B9C  cmp         eax,ecx  
00385B9E  je          FindVITargetTypeInstance+69h (385BB3h)  
00385BA0  add         ecx,8  
00385BA3  push        ecx  
00385BA4  add         eax,8  
00385BA7  push        eax  
00385BA8  call        strcmp (3814E0h)  
00385BAD  pop         ecx  
00385BAE  pop         ecx  
00385BAF  test        eax,eax  
00385BB1  jne         FindVITargetTypeInstance+80h (385BCAh)  
00385BB3  test        byte ptr [esi+14h],3  
00385BB7  jne         FindVITargetTypeInstance+72h (385BBCh)  
00385BB9  mov         dword ptr [ebp-20h],esi  
00385BBC  mov         eax,dword ptr [ebp-8]  
00385BBF  mov         dword ptr [ebp-0Ch],eax  
00385BC2  mov         eax,dword ptr [esi+4]  
00385BC5  mov         edi,esi  
00385BC7  mov         dword ptr [ebp-10h],eax  
00385BCA  mov         eax,dword ptr [esi]  
00385BCC  mov         ecx,dword ptr [ebp+0Ch]  
00385BCF  cmp         eax,ecx  
00385BD1  je          FindVITargetTypeInstance+0A0h (385BEAh)  
00385BD3  add         ecx,8  
00385BD6  push        ecx  
00385BD7  add         eax,8  
00385BDA  push        eax  
00385BDB  call        strcmp (3814E0h)  
00385BE0  pop         ecx  
00385BE1  pop         ecx  
00385BE2  test        eax,eax  
00385BE4  jne         FindVITargetTypeInstance+129h (385C73h)  
00385BEA  push        dword ptr [ebp+8]  
00385BED  lea         eax,[esi+8]  
00385BF0  call        PMDtoOffset (385A1Eh)  
00385BF5  pop         ecx  
00385BF6  cmp         eax,dword ptr [ebp+10h]  
00385BF9  jne         FindVITargetTypeInstance+129h (385C73h)  
00385BFB  mov         eax,dword ptr [ebp-8]  
00385BFE  sub         eax,dword ptr [ebp-0Ch]  
00385C01  cmp         eax,dword ptr [ebp-10h]  
00385C04  ja          FindVITargetTypeInstance+120h (385C6Ah)  
00385C06  cmp         byte ptr [ebp-1],0  
00385C0A  je          FindVITargetTypeInstance+129h (385C73h)  
00385C0C  test        byte ptr [edi+14h],40h  
00385C10  jne         FindVITargetTypeInstance+0DCh (385C26h)  
00385C12  cmp         dword ptr [ebp-0Ch],0  
00385C16  jne         FindVITargetTypeInstance+0D8h (385C22h)  
00385C18  test        byte ptr [esi+14h],1  
00385C1C  je          FindVITargetTypeInstance+0D8h (385C22h)  
00385C1E  mov         byte ptr [ebp-1],0  
00385C22  mov         al,1  
00385C24  jmp         FindVITargetTypeInstance+0F7h (385C41h)  
00385C26  mov         ecx,dword ptr [edi+18h]  
00385C29  mov         ecx,dword ptr [ecx+0Ch]  
00385C2C  mov         eax,dword ptr [ecx+eax*4]  
00385C2F  mov         eax,dword ptr [eax+14h]  
00385C32  test        al,1  
00385C34  je          FindVITargetTypeInstance+0F0h (385C3Ah)  
00385C36  mov         byte ptr [ebp-1],0  
00385C3A  shr         eax,2  
00385C3D  not         al  
00385C3F  and         al,1  
00385C41  cmp         byte ptr [ebp-1],0  
00385C45  je          FindVITargetTypeInstance+129h (385C73h)  
00385C47  test        al,al  
00385C49  je          FindVITargetTypeInstance+129h (385C73h)  
00385C4B  push        dword ptr [ebp+8]  
00385C4E  lea         eax,[edi+8]  
00385C51  call        PMDtoOffset (385A1Eh)  
00385C56  cmp         dword ptr [ebp-14h],0  
00385C5A  pop         ecx  
00385C5B  je          FindVITargetTypeInstance+118h (385C62h)  
00385C5D  cmp         dword ptr [ebp-18h],eax  
00385C60  jne         FindVITargetTypeInstance+14Fh (385C99h)  
00385C62  mov         dword ptr [ebp-14h],edi  
00385C65  mov         dword ptr [ebp-18h],eax  
00385C68  jmp         FindVITargetTypeInstance+129h (385C73h)  
00385C6A  test        byte ptr [esi+14h],5  
00385C6E  jne         FindVITargetTypeInstance+129h (385C73h)  
00385C70  mov         dword ptr [ebp-1Ch],esi  
00385C73  inc         dword ptr [ebp-8]  
00385C76  cmp         dword ptr [ebp-8],ebx  
00385C79  jb          FindVITargetTypeInstance+3Ch (385B86h)  
00385C7F  cmp         byte ptr [ebp-1],0  
00385C83  je          FindVITargetTypeInstance+142h (385C8Ch)  
00385C85  mov         eax,dword ptr [ebp-14h]  
00385C88  test        eax,eax  
00385C8A  jne         FindVITargetTypeInstance+151h (385C9Bh)  
00385C8C  cmp         dword ptr [ebp-1Ch],0  
00385C90  je          FindVITargetTypeInstance+14Fh (385C99h)  
00385C92  mov         eax,dword ptr [ebp-20h]  
00385C95  test        eax,eax  
00385C97  jne         FindVITargetTypeInstance+151h (385C9Bh)  
00385C99  xor         eax,eax  
00385C9B  pop         edi  
00385C9C  pop         esi  
00385C9D  pop         ebx  
00385C9E  leave  
00385C9F  ret
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 18:50     Частое использование dynamic_cast в конкретных целях. Правильно ли?
Еще ссылки по теме:

dynamic_cast C++
C++ Объясните dynamic_cast
C++ dynamic_cast

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

Или воспользуйтесь поиском по форуму:
anonym17
2 / 0 / 1
Регистрация: 31.10.2013
Сообщений: 21
09.01.2014, 18:50  [ТС]     Частое использование dynamic_cast в конкретных целях. Правильно ли? #22
Бампнука ещё разок тему, может ещё кто-то как-то отпишется.
Yandex
Объявления
09.01.2014, 18:50     Частое использование dynamic_cast в конкретных целях. Правильно ли?
Ответ Создать тему
Опции темы

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