![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
вот в таком коде
если раскомментировать закомментированные строки, прога не компилится как я понимаю. так обращаться к статикам нельзя по стандарту. но почему. не понимаю. может кто знает? |
|||
|
||||
| _stranger_ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 3.10.2006 Где: город-герой Киев Репутация: 2 Всего: 2 |
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
вообще можно обращаться к статическим переменным (функциям) через операторы . и ->, но это лучше не делать так как код будет труднее читать
Это сообщение отредактировал(а) Lazin - 15.1.2008, 11:57 |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Статические переменные и функции класса можно рассматривать как обычные переменные и функции в пространстве имён, но имеющие доступ к приватным членам класса.
Пример:
|
|||
|
||||
| Alek86 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
мне оно не нравится потому, как если есть
то я не могу написать
я знаю, что можно std::vector<int> затайпдефить, но все равно это уже не то... ибо по смыслу мне нужен итератор именно для типа ЭТОЙ ПЕРЕМЕННОЙ а не для ЭТОГО ТИПА Это сообщение отредактировал(а) Alek86 - 15.1.2008, 12:12 |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
вроде-бы в следующей версии стандарта можно будет писать
а компилятор немного подумает и определит тип переменной i |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
да вот, ждем-с
правда, все равно неясно почему написать так (как в вопросе) нельзя... Это сообщение отредактировал(а) Alek86 - 15.1.2008, 12:48 |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
||||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
Fazil6, а почему?
(меня как раз именно это и интересует) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Alek86, считай недоработка языка. Идеального ничего не бывает.
|
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
ну видимо потому, что есть точка и стрелка для доступа к членам и нафига здесь еще и :: , а выковыривания типа из объекта вроде
это совсем уж другая задача. Ведь в объекте нет описания этого типа (я так думаю). Т.е компиллятору нужно будет определить, что это за тип такой объекта v и уже из него добывать, а тут еще наследование может под ногами путаться, и тем более если позволить добывать таким оператором переменные из объектов, то получается неоднозначность между тем чего мы хотим (тип или переменную, typename вроде тока в шаблонах можно применять) |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
я больше мнения bsa придерживаюсь (ну, или может исторические причины)
Fazil6, вроде, наследование никак повлиять не может, ибо статические виртуальные функции невозможны, и, поскольку С++ контекстно-зависимый, то и без того неоднозначностей хватает... В шаблонах typename из-за того, что не всегда виден контекст.... |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Alek86, доступ к статическим функциям возможен через точку или стрелку!
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |