Tatiana |
Отправлено: 14.06.2005, 12:48 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12

|
Есть строка с именем класса. Как привести объект к данному классу?
Например, AnsiString s = "TWinControl"
Нужно получить результат, аналогичный (TWinControl*)Sender
|
 |
AVC |
Отправлено: 14.06.2005, 12:58 |
|
Ветеран
Группа: Модератор
Сообщений: 1583

|
Во время выполнения?
если имя класса заранее не известно, то
if else if ....
если имя класса известно на этапе проектирования а не известен тип объекта, тогда
dynamic_cast
|
 |
Tatiana |
Отправлено: 14.06.2005, 13:07 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12

|
Имя неизвестно, но нельзя ли как-нибудь по другому? |
 |
AVC |
Отправлено: 14.06.2005, 13:13 |
|
Ветеран
Группа: Модератор
Сообщений: 1583

|
Можно, если заменить if else на что-то еще. (Например ассоциативный массив указателей)
Или "работать" с минимально-необходимым наследником. |
 |
Tatiana |
Отправлено: 14.06.2005, 13:17 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12

|
Что — то не поняла про ассоциативный массив указателей |
 |
AVC |
Отправлено: 14.06.2005, 13:27 |
|
Ветеран
Группа: Модератор
Сообщений: 1583

|
"Те же яйца в профиль".
Создаете экземпляры всех возможно требуемых классов. Указатели собираете в массив, индексированный именами классов.
Может приведете саму проблему, для которой вы ищите решение? Мне кажется, что вы не совсем четко представляете что делает компилятор (даже не линковщик), а что код во время своего исполнения.
|
 |