Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Массив указателей на базовый класс (https://forum.antichat.xyz/showthread.php?t=126901)

herfleisch 25.06.2009 16:47

Массив указателей на базовый класс
 
Есть массив указателей MainArray на базовый класс string. Нужно динамически заполнять его указателями на производный класс stringid. С этим проблем не возникает. Но вот такой код не работает:
Код:

(*(MainArray[i]))->CharsDown();
так как метод CharsDown() является членом производного класса stringid, а указатель у нас на объект класса string, в котором он и ищет данный метод. Как в данном случае вызвать CharsDown() ???

razb 25.06.2009 17:14

Код:

static_cast<stringid *>(MainArray[i])->CharsDown();

herfleisch 25.06.2009 17:35

Borland C++ 3.11 ругается вот так на эту строку:

Undefined symbol: static_cast
Inproper use of typedef: stringid
Expression syntax

herfleisch 25.06.2009 17:46

Как я понимаю, такой вариант решения проблемы относится к Visual C++. Я его не могу использовать никаким образом.

LEE_ROY 25.06.2009 17:52

Цитата:

Сообщение от herfleisch
Borland C++ 3.11 ругается вот так на эту строку:

Undefined symbol: static_cast
Inproper use of typedef: stringid
Expression syntax

под windows 3 компилиш??

herfleisch 25.06.2009 18:21

Под вистой. Борландом пользую, потому что в лабораторной нужно обязательно использовать conio.h.

Ra$cal 25.06.2009 19:55

ну делай классическое приведение типов
((stringid *)MainArray[i])->CharsDown();

razzzar 25.06.2009 20:03

Цитата:

Сообщение от herfleisch
Под вистой. Борландом пользую, потому что в лабораторной нужно обязательно использовать conio.h.

В студии тоже есть conio.h
Это стандартная библиотека С

herfleisch 25.06.2009 20:12

В студии она есть, только нужных мне функций она не содержит.

herfleisch 25.06.2009 20:28

Спасибо за ответы. Больше всего тут уместно явное приведение типов. Просто поначалу я как-то коряво им воспользовался и мне показалось что это не пройдёт.


Время: 12:41