Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
#1

Описание двух "пересекающихся" классов - C++

27.08.2011, 16:48. Просмотров 919. Ответов 10

Как сделать два класса в которых методы используют параметры с типами друг-друга
C++
1
2
3
4
5
6
7
8
9
10
11
12
class c1
{ public:
    int param;
    int method(c2 param);
};
class c2
{ public:
    int param;
    int method(c1 param) { return param.param; }
};
 
int c1::method(c2 param) { return param.param; }
в четвёртой строке c2 "ещё" не известен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2011, 16:48     Описание двух "пересекающихся" классов
Посмотрите здесь:

Описание классов. Класс "Угол" - C++
Опишите класс "Угол" для измерения углов. Данные класса : число градусов и минут Методы класса : должны обеспечить минимальную...

Перезагрузка оператора "=" для двух классов - C++
Есть такой исходник с двумя классами, но не работает перегрузка оператора "=" #include "stdafx.h" #include <iostream> using...

Иерархия классов "люстра", "лампа" - C++
Реализовать и протестировать иерархию классов (родительский и производные) : Настольная лампа с автоматическим регулятором освещенности ...

Описание объекта "Куб". Нахождение его площади и объема - C++
Всем доброго времени суток! К лабораторной работе нужно написать программу, которая сначала описывает объект "Куб", затем рассчитывает его...

Дать каждому элементу массива "описание" - C++
Как дать каждому элементу массива "описание" ? Например, такой массив: 4 4 hungry // чтоб было так, т.е. рядом с каждым...

Описание класса "Студенческая группа" - C++
Добрый вечер! Нужна помощь в составлении программы. Условие: Описать класс "студенческая группа". Предусмотреть возможность работы с...

Построить описание класса "Органзация" - C++
Построить описание класса, содержащего информацию о почтовом адресе организации, а также содержащий методы ввода и вывода почтового...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
27.08.2011, 16:50     Описание двух "пересекающихся" классов #2
Ну так добавь в самое начало
C++
1
class c2;
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.08.2011, 16:51     Описание двух "пересекающихся" классов #3
skvor, объявить c2 до c1.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class c2;
 
class c1
{ public:
    int param;
    int method(c2 param);
};
class c2
{ public:
    int param;
    int method(c1 param) { return param.param; }
};
 
int c1::method(c2 param) { return param.param; }
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.08.2011, 17:25     Описание двух "пересекающихся" классов #4
Цитата Сообщение от silent_1991 Посмотреть сообщение
skvor, объявить c2 до c1.
Кажется, не получится. Ведь по значению передаётся объект, а не по ссылке или указателю.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.08.2011, 17:42     Описание двух "пересекающихся" классов #5
Deviaphan, студия компилит...
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
27.08.2011, 18:17     Описание двух "пересекающихся" классов #6
Цитата Сообщение от silent_1991 Посмотреть сообщение
Deviaphan, студия компилит...
По идее странно. Ведь размер не известен...
Или потому что реализация уже после объявления класса с2.
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
27.08.2011, 18:20  [ТС]     Описание двух "пересекающихся" классов #7
Спасибо, работает. Ещё б кто объяснил, в чём тайный смысл этого. Ведь по сути
C++
1
class c2;
ничего не описывает, или это просто некая гарантия того, что позже будет?
При прохождении компилятором 4 строки всё равно ничего не известно о свойствах передаваемого аргумента.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.08.2011, 18:24     Описание двух "пересекающихся" классов #8
skvor, главное, что компилятор понимает, что теоретически такая сущность может иметь место.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
27.08.2011, 18:26     Описание двух "пересекающихся" классов #9
Цитата Сообщение от skvor Посмотреть сообщение
ничего не описывает, или это просто некая гарантия того, что позже будет?
Это указывает компилятору, что идентификатор c2 является типом.
Цитата Сообщение от skvor Посмотреть сообщение
При прохождении компилятором 4 строки всё равно ничего не известно о свойствах передаваемого аргумента.
А в этом месте пока ничего и не надо знать. Знать надо к моменту определения реализации этой функции.
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
27.08.2011, 18:51  [ТС]     Описание двух "пересекающихся" классов #10
Спасибо. Перенес тело method прямо в описание c1 компилятор сразу выдал аж две ошибки.
test.cpp:34: error: 'param' has incomplete type
test.cpp:29: error: forward declaration of 'struct c2'
Вот с 34-ой строкой
C++
1
int method(c2 param){ return param.param; }
всё понятно - невозможно скомпилировать функцию без реального знания типа.
А почему ошибка в 29-ой (class c2;) от того, что изменили 34-ую?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 18:53     Описание двух "пересекающихся" классов
Еще ссылки по теме:

Составить описание класса "время" - C++
ПОМОГИТЕ ПОЖАЛУЙСТА СДЕЛАТЬ РАБОТУ!!!! Время задается в формате час:минута:секунда. Методы класса: а) добавление ко времени...

"undefined reference" при инклюде внешних классов/библиотек - C++
Используется: Eclipse CDT, MinGW Немного сырцов: #ifndef STACK_H_ #define STACK_H_ template<class T> class...

Помогите придумать несложную задачку по теме "Шаблоны классов" - C++
Привет всем, я новичок в С++, и хочу сделать какую нибудь задачу по теме "шаблоны классов", придумайте пожалуйста какую нибудь не сильно...

Реализация иерархии классов на основе класса "Грузоперевозчик" - C++
Помогите, пожалуйста!!!!Четвёртый день сижу над этой задачей и ничего не получается. Создать базовый класс «Грузоперевозчик» и...

Ошибка "no matching function for call to." / наследование классов - C++
Доброго времени суток. В качестве некоторой предыстории скажу, что начать изучать С++ довелось совсем недавно, и в процессе возникла...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
27.08.2011, 18:53     Описание двух "пересекающихся" классов #11
Ну это компилятор просто показал место, откуда взялся этот незавершённый тип. Подсказка, типа
Yandex
Объявления
27.08.2011, 18:53     Описание двух "пересекающихся" классов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru