0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 11
|
||||||
1 | ||||||
В чем причина ошибки extra qualification04.12.2015, 03:00. Показов 26696. Ответов 16
Метки нет (Все метки)
Видает ошибку [Error] extra qualification 'RyadokIdentifier::' on member 'Lowercase' [-fpermissive] в чем причина
0
|
04.12.2015, 03:00 | |
Ответы с готовыми решениями:
16
Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type" Ошибка в книге extra qualification 'Critter::' on member 'operator=' В чем причина ошибки? В чем причина ошибки? |
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
04.12.2015, 08:30 | 2 |
Если определяешь функцию-член внутри класса, то не надо перед ней писать RyadokIdentifier::.
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
|
|
04.12.2015, 08:50 | 3 |
Это в принципе не запрещено - просто излишне.
У меня на VS 2008 компилируется без ошибок
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
04.12.2015, 12:27 | 4 |
Официальный документ с вами не согласен
В С++ qualifiсation можно использовать только для уже объявленных имен в классе или неймспейсе. Согласно параграфу 8.3
1
|
0 / 0 / 0
Регистрация: 21.11.2014
Сообщений: 11
|
|
04.12.2015, 14:04 [ТС] | 5 |
Этот код?
Добавлено через 28 минут А эта ошибка 164 [Error] no match for 'operator=' in 'C = RyadokIdentifier::operator+(const RyadokIdentifier&)((*(const RyadokIdentifier*)(& B)))' ?
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
04.12.2015, 15:59 | 7 | |||||
Он валидный, но подразумевает не тот смысл, который ты вложил.
Смотри что получается:
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
04.12.2015, 16:09 | 8 |
DrOffset,
::N::N::f и ::N::f это разные сущности. При этом ::N::f остается не определена.Из цитаты Стандарта я понял, что можно ссылаться с указанием квалификатора имени на член текущего (не вложенного) класса/пространства имен, а не какого-то другого. Если это действительно так, то хотелось бы увидеть рабочий пример. Если не так, то не помешало бы уточнения по цитате.
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
04.12.2015, 16:24 | 9 |
Собственно, если процитировать чуть дальше, об этом написано прямо.
Разные. Я лишь показал, чем является void N::f() {} в представленном тобой контексте. Причем это совершенно логично, даже без чтения стандарта.Цитата выше. Уточнение есть. Я его только что дал. А так, ты и сам мог бы озаботиться и дополнить
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
04.12.2015, 16:37 | 10 | |||||
DrOffset, так inline namespace это не nested namespace. Вот пример с inline:
::N::M::f и ::N::f по сути одно и то же, но с разными именами (именно из-за специфики inline).Т.е. для текущего класса/пространства имен всё же нельзя несмотря на: ?
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
04.12.2015, 17:42 | 11 |
Согласен - это не в тему.
Однако, здесь все равно выводы верные выше. Т.к. в текущем пространстве имен - это будет означать квалификацию вложенного пространства имен в текущее. Т.е. определить в текущем пространстве имен квалифицированное на него же же имя - нельзя. И это не противоречит этому пункту нисколько.
0
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||||
04.12.2015, 18:04 | 12 | |||||
Ну и для класса получается аналогично? У ТС вариант как раз с классом. И по нему ты высказался:
из чего, кстати, не следует невозможность сделать этого в текущем классе. Да и в цитате из Стандарта про текущий класс не сказано (не замечено мной). Т.е. вроде как запись вида:
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
04.12.2015, 18:26 | 13 |
Tulosba, скорее всего это все происходит потому, что у меня нет возможности внимательно посмотреть С++11 стандарт (это может занять значительное время), т.к они убрали из известного мне места эти формулировки в явном виде. Поэтому, если ты позволишь, я приведу цитату из С++03:
8.3
1
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
|
04.12.2015, 19:19 | 14 |
Вот нашел объяснение причины: http://wg21.cmeerw.net/cwg/issue482
Правда, не понял как продемонстрировать вот это заключение:
1
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
04.12.2015, 20:17 | 15 | |||||
Пока нет. Надо подумать.
Они пошли по пути, который ты предлагал как вероятный. В таком случае, если этот параграф действительно изменили (пока у меня не будет на руках законченной версии С++14 - я оставляю за собой право сомневаться), то ни один из компиляторов не ведет себя корректно в этом вопросе: clang в режиме С++98 все равно разрешает писать так:
Очень жаль, что comeauonline больше не работает.
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
|
04.12.2015, 21:19 | 17 |
Посмотреть как это на практике учитывалось в самом продвинутом с точки зрения соответствия стандарту компиляторе
0
|
04.12.2015, 21:19 | |
04.12.2015, 21:19 | |
Помогаю со студенческими работами здесь
17
В чем причина ошибки no match for? В чем причина ошибки istream В чем причина ошибки линковки в NetBeans (gcc 4.9)? В чем причина ошибки компиляции в программе для определения площади треугольника? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |