|
|
|
Получение одного из родителей по void*
|
|||
|---|---|---|---|
|
#18+
Добрый день! Добрый ALL! Что имею: Класс Х наследник от 2-х родителей(А,В). Ещё Точнее А-класс, В-структура Что хочу: Верунть по viod* структуру B из класса Попытка писанины: void* Х::GetData() { return dynamic_cast<В>(this); } получаю: ...\vmtype.cpp(29): error C2680: 'В' : invalid target type for dynamic_cast Сижу туплю. Букварь дома... Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 11:31 |
|
||
|
Получение одного из родителей по void*
|
|||
|---|---|---|---|
|
#18+
Вариант решения B* Х::GetDataВ() { return this; } void* X::GetData() { return GetDataB(); } Если есть более красивые варианты буду признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 11:36 |
|
||
|
Получение одного из родителей по void*
|
|||
|---|---|---|---|
|
#18+
return dynamic_cast< В* >(this); Или просто return this;. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 13:20 |
|
||
|
Получение одного из родителей по void*
|
|||
|---|---|---|---|
|
#18+
Насколько понял вопрос, всё делается очень просто. И не надо никаких функций писать. B * _B = new B(); A * _A = _B; Наследники, поддерживают на 100% структуру предка, поэтому экзеспляр класса B может быть приведён к структуре A . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 15:02 |
|
||
|
Получение одного из родителей по void*
|
|||
|---|---|---|---|
|
#18+
Поправка: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 15:04 |
|
||
|
Получение одного из родителей по void*
|
|||
|---|---|---|---|
|
#18+
Termi_ucНасколько понял вопрос, всё делается очень просто. И не надо никаких функций писать. B * _B = new B(); A * _A = _B; Наследники, поддерживают на 100% структуру предка, поэтому экзеспляр класса B может быть приведён к структуре A . Это УГУ. но у меня немного другой контекст применения. В хитрую функцию я должен передать по viod* структуру В Иеререхия Есть Класс А - Папа(имеет void* GetData()) Есть Класс Х public A, protected B По плану в Х перегружаю GetData() чтоб он выдавал указатель на B. (Его-то и спрашивал) хитрая функция SuperFunc делает так: DoMyBest(void* pData) { } void SuperFunc(A* pData) { ... DoMyBest(A->GetData()); ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 16:39 |
|
||
|
Получение одного из родителей по void*
|
|||
|---|---|---|---|
|
#18+
Мама!!!!!!! Надо поспать ранее Вариант решения B* Х::GetDataВ() { return this; } void* X::GetData() { return GetDataB(); } сейчас void* X::GetData() { B* retval=this; return retval; } ps как стыдно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2007, 16:54 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34336769&tid=2029434]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
86ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 453ms |

| 0 / 0 |
