crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Задачка N5
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
archimed7592 Дата 11.4.2008, 16:49
 
Цитата
Кто нибудь четко сформулировать ответ может?

Цитата
Ambiguity

Убедиться можно при попытке сделать следующее:
D d;
A const &a = d; // еггог
Andrew Selivanov Дата 11.4.2008, 16:38
 
Цитата(archimed7592 @ 11.4.2008, 14:02) *
Цитата
archimed7592, думаю тут в другом дело...
Хде слон, которого я не приметил? :)
P.S. Проверил на студии: "as B"... МинЖВ под рукой нет.
Но больше всего порадовало, как студия перед тем как выдать "as B" выдала warning со словами, мол catch B const & перекрыт первым catch'ем, который const A & :lol:


mingw был того же мнения...
..\src\test.cpp: In function `int main()':
..\src\test.cpp:36: warning: exception of type `B' will be caught
..\src\test.cpp:32: warning: by earlier handler for `A'

Кто нибудь четко сформулировать ответ может? :) Мне на ум пришел вариант "Плюнул так как не смог выбрать один из двух экземпляров A".
Наверное можно использовать как пример виртуального наследования:
class B : virtual public A 
   {
   };

class C : virtual public A
   {
   };

Вот так будет более ожидаемый результат :)
archimed7592 Дата 11.4.2008, 14:24
  Ambiguity? Лаки, ты жестокий человек :).
LuckLess Дата 11.4.2008, 13:43
 
Цитата
Наследование у D от A идет косвенно, поэтому вариант A не подходит

не то ))

поксказка.. если B и C будут наследовать A виртуально, то будет "as A"
AD Дата 11.4.2008, 13:41
 
Цитата
std::cout << "Catched " << typeid(B).name() << " as B" << std::endl;



после того, как сам решил задачку посмотрел на ответы.

Наследование у D от A идет косвенно, поэтому вариант A не подходит
LuckLess Дата 11.4.2008, 13:18
  Ха! Архимед попался! Пойду возьму с полки пирожек ;)
Цитата
ибо срабатывает первый подходящий

угу.. но тут есть завязочка.. подходящий ли тут A ?
ViGOur Дата 11.4.2008, 13:07
  Потом я думаю LuckLess, сам скажет, как раз у тебя будет время подумать... :)
archimed7592 Дата 11.4.2008, 13:02
 
Цитата
archimed7592, думаю тут в другом дело...
Хде слон, которого я не приметил? :)
P.S. Проверил на студии: "as B"... МинЖВ под рукой нет.
Но больше всего порадовало, как студия перед тем как выдать "as B" выдала warning со словами, мол catch B const & перекрыт первым catch'ем, который const A & :lol:
ViGOur Дата 11.4.2008, 12:54
  archimed7592, думаю тут в другом дело... :)
archimed7592 Дата 11.4.2008, 12:47
  "as A", ибо срабатывает первый подходящий catch.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.4.2024, 20:31