1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
|
|||||||||||
1 | |||||||||||
Не вызывается дружественная функция31.10.2015, 14:57. Показов 1123. Ответов 9
Метки нет (Все метки)
Создал класс, есть дружественная функция:
Прототип указал с ключевым словом friend вроде все нормально, не понимаю в чем проблема
0
|
31.10.2015, 14:57 | |
Ответы с готовыми решениями:
9
Дружественная функция Дружественная функция Дружественная функция c++ Дружественная функция |
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
31.10.2015, 15:07 | 2 | |||||
Судя по телу функции, ей вообще не надо быть friend.
Наверное в том, что слишком мало кода ты нам показываешь. На всякий случай:
0
|
1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
|
|||||||||||
31.10.2015, 15:27 [ТС] | 3 | ||||||||||
У меня функция была в public, поместил в private, но ничего не изменилось.
Описание класса:
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
31.10.2015, 15:34 | 4 | |||||
Сообщение было отмечено bambique как решение
Решение
bambique, напиши так:
1
|
1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
|
|
31.10.2015, 15:39 [ТС] | 5 |
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
31.10.2015, 16:04 | 6 | |||||
По стандарту.
7.3.1.2/3 11.3/11
0
|
1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
|
|
31.10.2015, 18:06 [ТС] | 7 |
Не могу полностью все перевести, но как я понял, компилятор просто не видит функцию NOD так как она определена после конструктора и надо указать прототип, для того чтобы компилятор мог ссылаться на нее, верно? И не понял почему в 10 строчке примера ошибка.
Добавлено через 10 минут Обьясните по простому, сложный английский для меня.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
31.10.2015, 18:29 | 8 |
0
|
18844 / 9843 / 2408
Регистрация: 30.01.2014
Сообщений: 17,285
|
||||||
31.10.2015, 20:42 | 9 | |||||
на самом деле я зря процитировал второй фрагмент, т.к. он касается локальных классов, а там требования строже. Но смысл, конечно, тот же.
Как было сказано в цитате, впервые определенная френд-декларация предполагает, что имя является членом наиболее вложенного неклассового пространства имен. Т.е. имя "а" расценивается, как принадлежащее пространству имен функции f(). Но функции такой (a) там нет, поэтому ошибка. Вот, например, какую диагностику выдаст на этот пример clang: error: no matching function 'a' found in local scope; did you mean '::a'? О таком запрете явно сказано:
1
|
1 / 1 / 3
Регистрация: 02.04.2015
Сообщений: 169
|
|
31.10.2015, 23:05 [ТС] | 10 |
0
|
31.10.2015, 23:05 | |
31.10.2015, 23:05 | |
Помогаю со студенческими работами здесь
10
Дружественная функция Дружественная функция Дружественная функция-член Дружественная 2-м классам функция. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |