|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
||||||
Класс - друг25.04.2015, 13:46. Показов 2856. Ответов 44
Метки нет (Все метки)
Всем доброго дня !!!
Столкнулся с проблемой при обьявлении класса Dasa другом класса Da. В классе Da есть функция void nes () С помощью этой функции пытаюсь вызвать функцию void dasaha() класса Dasa. Получаю 1 ошибку. В чем может быть проблема ? Заранее спасибо !!!
0
|
||||||
| 25.04.2015, 13:46 | |
|
Ответы с готовыми решениями:
44
Класс-друг Описать класс Друг Класс - друг. Доступ к полям и методам |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 25.04.2015, 17:15 | |||||||
|
класс - это описание типа. физически, данные-члены класса существуют в объектах этого класса:
то имеют ввиду "получить доступ к данным-членам конкретного объекта этого класса". когда говорят "запустить функцию-член класса", то имеют ввиду "запустить функцию-член класса для конкретного объекта этого класса".
0
|
|||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 25.04.2015, 17:26 | ||
|
0
|
||
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
||||||
| 26.04.2015, 14:44 [ТС] | ||||||
|
Спасибо !!! Для надежности повторю пройденный материал.на примере животных
Добавлено через 21 час 16 минут Хотел вернуться к вчерашней проблеме по поводу класса друга. сегодня решил сделать другом не другой класс ,а метод этого класса. В данном случае nes (Dasa & hj) . При выполнении метода void nes (Dasa & hj) вновь ошибка. По идет все логично в тексте. Подскажите пожалуйста где я мог накосячить ? ________________________________________ _______________________________
0
|
||||||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||
| 26.04.2015, 14:50 | ||
|
Во-вторых, не помешали бы человеческие имена. В-третьих, нужна предварительная декларация. http://ideone.com/4or4fb
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 26.04.2015, 14:52 | ||||||
0
|
||||||
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
|
| 26.04.2015, 15:06 [ТС] | |
|
Tulosba я пока занимаюсь тестированием возможностей С++
hoggy спасибо Вам за помощь - теперь все хорошо. Не понял только для чего делать эти перемещении классов ? При обьявлении класса Da другом класса Dasa таких перемещений не требовалось, а при обьявлении лишь одной функции другом требуется такая путаница.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 26.04.2015, 15:12 | |||||||
|
вам на вход подается текстовый файл с исходным кодом. ваша задача - распарсить этот код, и сгенерировать машинный код. итак, вы получаете файл, и начинаете анализировать строчку за строчкой:
0
|
|||||||
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
|||||||||||
| 26.04.2015, 17:05 [ТС] | |||||||||||
|
как я понял функция друг должна быть размещена сразу за классом Dasa ?
в принципе все логично функция nes(Dasa & hj) идет за класссом Dasa , а предсказать на перед комппилятор по ходу не может. Добавлено через 1 час 24 минуты ________________________________________ __________ опять какая-то непонятица ((( почему , когда я перемещаю void Da :: nes(Dasa & hj) {hj.dasaha() ;} выше класса Dasa , то опять получаю ошибку ? ведь теперь void nes (Dasa & hj); обьявленно раньше класса Dasa
как бы это смешно не выглядело , но этот вариант работает нормально..
{ hj.dasaha() ; } идет за классом .... почему же в этом случае компилятор умнее чем в вышеприведенной проблеме ?
0
|
|||||||||||
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
|||||||||||
| 21.06.2015, 13:45 [ТС] | |||||||||||
|
Всем доброго дня !!!
Столкнулся с проблемой при обьявлении класса B другом класса А. В классе B есть функция
Подскажите пожалуйста , что нужно добавить для исключения этих ошибок. Заранее спасибо !!!
0
|
|||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 21.06.2015, 14:02 | |||||||
1
|
|||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 21.06.2015, 14:02 | ||
|
так и должно быть. Шаблон ну по аналогии работает примерно как функция, т.е. то что <T> в коде шаблона - формальный параметр, то что в создании переменной типа A<int> - int - фактический параметр. т.е. фактически встретив такое объявление компилятор возьмет шаблон, подставит вместо T int и скомпилирует класс. Если встретит a<char> то подставит вместо T char и скомпилирует еще один класс, т.е. получается один раз пишется алгоритм под любые типы данных, а под фактические типы компилятор код копипастит. Но тип естесвенно надо указывать при объявлении переменной типа. Если напаисать A<T> в main то будет ошибка что тип T неизвестен.
1
|
||
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
||||||||||||||||||||||
| 21.06.2015, 14:51 [ТС] | ||||||||||||||||||||||
|
hoggy спасибо Вам большое.
такую мелочь не учел как
Добавлено через 36 минут Решил сделать class B шаблоном class B по прежнему друг classа А Опять какая-то непонятная логическая ошибка. Подскажите пожалуйста почему теперь 5 ошибок ?
0
|
||||||||||||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 21.06.2015, 15:05 | ||
|
1
|
||
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
||||||
| 21.06.2015, 15:17 [ТС] | ||||||
|
так что-ли ?
0
|
||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 21.06.2015, 15:31 | ||||||
|
он ничего ни про какой класс B б пока что ничего не знает. Добавь форвард-декларацию B перед A;
Добавь в 7-ю строку:
1
|
||||||
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
|||||||||||
| 21.06.2015, 15:37 [ТС] | |||||||||||
|
Fulcrum_013 действительно это помогло.
большое Вам спасибо за помощь ! только почему не надо было ставить
0
|
|||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 21.06.2015, 16:20 | |
|
потому что когда он искал просто класс он понимал что если его еще нет, то он может где то появиться, а если появится то ему надо обеспечить доступ.
А когда ищется шаблон надо конкретизировать какой. соответсвенно используя форвард-декларацию даем компилятору возможность увидеть как именно будет параметризирован этот друг.
1
|
|
|
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
|
|
| 21.06.2015, 17:42 [ТС] | |
|
Fulcrum_013 большое спасибо за помощь !
буду думать.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 21.06.2015, 20:50 | ||||||||
|
поэтому, можно и без форвардов: http://rextester.com/DVQFTV39891
0
|
||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 21.06.2015, 21:41 | ||
|
0
|
||
| 21.06.2015, 21:41 | |
|
Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами Класс: Разработать абстрактный класс класс Point для задания координаты... Отдельно класс данных, класс формул и главный класс Cоздать класс для объектов и сравнить объекты с друг другом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|