23.09.2015 / 17:16 | |
Freddy Пользователь Сейчас: Offline
Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
| Цитата Naik: Неужели компилятор не может посмотреть использования кода и сам все сгенерировать?Если я не ощибаюсь (в C точно так, в C++ на все 100% не уверен), компилятор однопроходный - разбирает исходный код сверху вниз один раз и не возвращается к нему. Поэтому просканировать весь проект он не в состоянии, да и чересчур долго бы это было на больших проектах. Нет же, ему нужен факт, что реализации именно в хидере Не ему, а линковщику, и "в одном объектном файле", точнее |
23.09.2015 / 17:59 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Freddy, ну ладно, вроде разобрался с этим, спасибо за разьяснение
|
23.09.2015 / 18:10 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Спустя время решил, что легче все определения класса держать в header'ах, а-ля java.
|
27.09.2015 / 17:18 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Прикольно, через родительский класс, в котором виртуальный метод публичный можно вызывать приватный метод в дочернем В java только protected можно |
27.09.2015 / 18:13 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Naik, а ну, покажи.
|
27.09.2015 / 20:37 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Изменено Naik (27.09 / 20:38) (всего 1 раз) |
27.09.2015 / 21:41 | |
aNNiMON Супервизор Сейчас: Online
Имя: Витёк Регистрация: 11.01.2010
| Naik, вот в чём магия. protected:
virtual T* get(int i) = 0;
В Java же нельзя понижать область видимости родительского метода в дочернем классе. И сдаётся мне, что в LinkedList твой private игнорируется и становится protected, как в List. __________________
let live Изменено aNNiMON (27.09 / 21:42) (всего 2 раза) |
27.09.2015 / 21:48 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| aNNiMON, в java можно тоже так, но только понижать до protected, а не private, что более логично, т.к. предку в любом случае нужны абстрактные методы детей.
Изменено Naik (27.09 / 21:50) (всего 1 раз) |
27.09.2015 / 22:46 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| C++ создан чтобы усложнять жизнь new LinkedList<char>(*linkedlist)); так не работает, т.к. конструктор принимает абстрактный тип List А вот с таким явным приведением работает) new LinkedList<char>(*((List<char>*)linkedlist)); |