Труд вопреки насмешкам
|
||||||
1 | ||||||
Обмен информацией между классами. Попытка 206.03.2018, 18:43. Показов 637. Ответов 4
Метки нет (Все метки)
Первая тема превратилась в гору флуда, попробую еще раз. Модераторы, простите за дубль. Вероятно, я плохо объяснил задачу.
Есть два класса: Class1 и Class2. Они должны использоваться друг в друге. В классе Class2 Class1 используется в переменных, функциях, параметрах функций множество раз (десятки-сотни). В классе Class1 оператор "=" и одна-две статических функции вызывают статическую функцию класса Class2. Что-то похожее на это:
d:\***\***.cpp(13): error C2653: Class2: не является именем класса или пространства имен d:\***\***.cpp(13): error C3861: gn: идентификатор не найден d:\***\***.cpp(16): error C2653: Class2: не является именем класса или пространства имен d:\***\***.cpp(16): error C3861: gn: идентификатор не найден Что нужно добавить/заменить, чтобы их не было?
0
|
06.03.2018, 18:43 | |
Ответы с готовыми решениями:
4
Обмен информацией между классами Попытка разобраться с классами в C++ Знакомство с классами, попытка реализации класса матриц Обмен информацией с файлами и модульный принцип программирования |
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|
06.03.2018, 18:47 | 2 |
В си - никак. нужно сначала определить класс, а потом уже его юзать. Здесь однопроходная компиляция. Максимум - сослаться на еще не определенный класс при помощи указателя.
0
|
Модератор
13692 / 10897 / 6470
Регистрация: 18.12.2011
Сообщений: 29,085
|
||||||
06.03.2018, 19:39 | 3 | |||||
Примерно так:
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||||||||||||
06.03.2018, 19:58 | 4 | ||||||||||||||||||||
zss, с предварительным объявлением класса нельзя писать реализацию функций до полного объявления второго класса. То есть нужно что-то типа
Или в файлы реализаций (сpp) добавлять заголовочные обоих классов, в которых используются предварительные объявления. Добавлено через 4 минуты //class1.h с классом Class1
1
|
Труд вопреки насмешкам
|
|
06.03.2018, 21:55 [ТС] | 5 |
При попытке вызвать gn() компиляция проходит нормально, но уже во время запуска выпрыгивает ошибка:
Необработанное исключение: System.AccessViolationException: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена. Что вообще такое "защищенная память"? Возможно, эта ошибка не имеет никакого отношения к взаимодействию классов? Если так, то в чем ее причина? И как ее исправить?
0
|
06.03.2018, 21:55 | |
06.03.2018, 21:55 | |
Помогаю со студенческими работами здесь
5
Связь между 2 классами Взаимодействие между классами Взаимодействие между классами Передача данных между классами Отличия между структурами и классами Реализация отношений между классами is-a, has-a, uses-a в С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |