![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Alek86 |
|
||||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
есть библиотека с классами:
менять его не имеем права а также есть у нас (наше собственное)
и
1. можно как-то заставить работать вызов функции
? 2. можно как-то заставить работать вызов функции
, где An - потомок A1 любой вложенности? |
||||||||||
|
|||||||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Зависит конечно от специфики Templ, но, в общем случае так:
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
и это будет работать?
![]() как туда U передается? щас сяду проверять хотя лучше не так. знаешь, где "Шаблоны С++" на русском взять ...эээ... подешевле? сам прочту |
|||
|
||||
archimed7592 |
|
||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ну, возьмём обыкновенные указатели:
Теперь shared_ptr:
Как же оно работает? Оч просто - потому что там есть шаблонный конструктор. Почему оно работает? Потому что: 1. В shared_ptr используются только типы T * и T & 2. Неявное преобразование U * -> T *(U & -> T &) возможно в случае, если U потомок T. 3. Логика работы shared_ptr< U > не нарушается в случае его преобразования к shared_ptr< T >, ибо, учитывая пункт 1, нигде не происходит т.н. "полиморфной срезки".
1. Не знаю. 2. Не читал. 3. Не знаю написано ли там об этом(хотя, скорее всего, написано) ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |