Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Аноним, Вы писали:
А>>не работает такой код:
RO>Попробуй просто RO>
RO>std::deque<T>::operator[];
RO>
пасибо
RO>P. S. Не надо наследоваться от того, от чего не надо наследоваться.
я делаю класс находящийся в отношении "as-a", т.е. "реализуемый посредством" дека.
городить композицию не вижу смысла (из-за лишнего уровня косвенности), тем более я от нее и ухожу
Здравствуйте, Bell, Вы писали:
RO>>P. S. Не надо наследоваться от того, от чего не надо наследоваться.
B>ИМХО не стóит давать советов в стиле «только так и никак иначе».
А>>а конкретно компилер ругается на отсутствие включаемого члена (оператора индекса).
RO>Попробуй просто RO>
RO>std::deque<T>::operator[];
RO>
Зачем рекомендовать deprecated(7.3.3/16) вещи (access-declaration (11.3) )? Мы можем и должны использовать using-declaration для member-declaration (7.3.3/4) в данном случае
7.3.3/16
[Note: use of access-declarations (11.3) is deprecated; member using-declarations provide a better alternative.]
11.3/1
The access of a member of a base class can be changed in the derived class by mentioning its qualified-id in the derived class declaration. Such mention is called an access declaration. The effect of an access declaration qualified-id ; is defined to be equivalent to the declaration using qualified-id ; 100)
100) Access declarations are deprecated; member using-declarations (7.3.3) provide a better means of doing the same things. In earlier
versions of the C + + language, access declarations were more limited; they were generalized and made equivalent to using-declarations.
7.3.3/3
Every using-declaration is a declaration and a member-declaration and so can be used in a class definition.
7.3.3/4
A using-declaration used as a member-declaration shall refer to a member of a base class of the class being defined, shall refer to a member of an anonymous union that is a member of a base class of the class being defined, or shall refer to an enumerator for an enumeration type that is a member of a base class of the class being defined.
Да и вообще много интересного еще есть в пункте 7.3
RO>P. S. Не надо наследоваться от того, от чего не надо наследоваться.
Это не public наследование, а private, да и просто меньше писать, чем если бы класс содержал std::queue<>, так как пришлось бы писать две функции — T & operator [] (std::size_t) и T & operator [] (std::size_t) const, а так очень лаконично.
PC>Зачем рекомендовать deprecated(7.3.3/16) вещи (access-declaration (11.3) )? Мы можем и должны использовать using-declaration для member-declaration (7.3.3/4) в данном случае
Затем, наверное, что компилятор глючит (?) и надо его хоть как-то "перехитрить" (хоть и не вышло)
Of course, the code must be complete enough to compile and link.
Здравствуйте, Lorenzo_LAMAS, Вы писали:
PC>>Зачем рекомендовать deprecated(7.3.3/16) вещи (access-declaration (11.3) )? Мы можем и должны использовать using-declaration для member-declaration (7.3.3/4) в данном случае
L_L>Затем, наверное, что компилятор глючит (?) и надо его хоть как-то "перехитрить" (хоть и не вышло)
Для не шаблонных классов у меня вроде работало...
L_L>>Затем, наверное, что компилятор глючит (?) и надо его хоть как-то "перехитрить" (хоть и не вышло) PC>Для не шаблонных классов у меня вроде работало...
На BCB ?
Of course, the code must be complete enough to compile and link.
Здравствуйте, Pavel Chikulaev, Вы писали:
PC>Здравствуйте, Lorenzo_LAMAS, Вы писали:
PC>>>Зачем рекомендовать deprecated(7.3.3/16) вещи (access-declaration (11.3) )? Мы можем и должны использовать using-declaration для member-declaration (7.3.3/4) в данном случае
L_L>>Затем, наверное, что компилятор глючит (?) и надо его хоть как-то "перехитрить" (хоть и не вышло) PC>Для не шаблонных классов у меня вроде работало...
именна, именна
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>>>Затем, наверное, что компилятор глючит (?) и надо его хоть как-то "перехитрить" (хоть и не вышло) PC>>Для не шаблонных классов у меня вроде работало...
L_L>На BCB ?
да. проблема именно в шаблонных классах.
з.ы. могу еще посмешить: на BDS2006 и TurboC++2006 — компилер ваще ложицца с "internal compiler error"