8 / 9 / 1
Регистрация: 30.06.2011
Сообщений: 250
|
|||||||||||
1 | |||||||||||
объяснить функцию09.10.2011, 17:44. Показов 2251. Ответов 26
Метки нет (Все метки)
Всем привет!
Есть код:
Объектов 3, помогите понять что твориться в этих строках
0
|
09.10.2011, 17:44 | |
Ответы с готовыми решениями:
26
Объяснить функцию Объяснить функцию проверки степени Объяснить функцию perevod Объяснить функцию арксинус |
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
09.10.2011, 19:22 | 21 |
Подозреваю, что это какой-то задачник, с задачами типа "что напечатает программа". А вместо реализации конкретных функций (в последнем примере - конструкторов), там стоят ... (типа оно есть, работает, но на результат вывода не влияет)
Добавлено через 1 минуту У меня компилируется такой код. Возможно, у меня другая версия студии
1
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
09.10.2011, 19:23 | 22 | |||||
0
|
Заблокирован
|
|
09.10.2011, 19:26 | 23 |
Значит gcc в отличии от Майкрософт VC++ 2010 в этом вопросе следует стандарту. Лично я уже в VC++ 2010 нашел четыре бага.
Добавлено через 1 минуту Может быть у вас уже с обновлением компилятор. Как я уже сказал, я не поставил себе SP1, который появился сразу же после выхода компилятора. Но тоже интересный вопрос: у вас компилируется код, когда предварительное объявление присутствует в классе, или же вы убрали предварительное объявление этой функции, оставив лишь ее определение?
0
|
09.10.2011, 19:29 | 24 | ||||||||||
Вроде понятно объяснил...
0
|
Заблокирован
|
|
09.10.2011, 19:32 | 25 |
Вполне возможно, что ваше объяснение близко к истине. То есть опять-таки проблема заключается в связывании, внешнем и внутреннем. То есть когда компилятор видет объявление, то он считает, что эта функция имеет внешнее связывание, а встраиваемые функции имеют внутреннее связывание. Поэтому компилятор не считает, что объявление друга имеет отношение к этой встроенной функции.
Надо просто убрать предварительное объявление, оставив определение, естественно, добавив к нему ключевое слово friend, и проблем не должно быть, если компилятор следует стандарту.
0
|
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
|
|
09.10.2011, 19:39 | 26 |
Сыроежка, убрала прототип (предварительное объявление) и все компилируется. С прототипом - нет.
Честно сказать, я даже не знаю, где посмотреть, какая у меня версия компилятора в студии, только версию самой студии могу сказать 10.0.30319.1 RTMRel В стандарте вроде что-то было про то, что дружественные функции в классе, впервые предварительно объявленные, имеют внешнюю линковку или как-то так с поправкой на мой английский
0
|
Заблокирован
|
|
09.10.2011, 19:46 | 27 |
Да, в стандарте есть подобная фраза "11.4 #3 A friend first declared in a friend declaration has external linkage."
На это я и ссылался. Что касается моего компилятора VC++ 2010, то я его по глупости купил в первых рядах, а обновление, которое вышло уже затем следом, еще не установил. Может быть этот баг уже исправлен.
1
|
09.10.2011, 19:46 | |
09.10.2011, 19:46 | |
Помогаю со студенческими работами здесь
27
Объяснить функцию двухмерного массива Объяснить пожалуйста мне эту функцию Объяснить $(this) Объяснить Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |