Название: c++, синтаксис [решено] Отправлено: ilyagoo от Марта 08, 2009, 14:29 есть потребность описать два класса следующим образом:
класс A имеет функцию-член, которая возвращает объект класса B. класс B имеет функцию-член, которая возвращает объект класса A. хочется получить нечто подобное, но, само собой, класс A не знает структуру класса B. как это обойти? Код: class A Название: Re: c++, синтаксис Отправлено: BRE от Марта 08, 2009, 14:35 есть потребность описать два класса следующим образом: Сделать так, чтобы функция f() хотя бы в одном из классов возвращала ссылку или указатель на объект.класс A имеет функцию-член, которая возвращает объект класса B. класс B имеет функцию-член, которая возвращает объект класса A. хочется получить нечто подобное, но, само собой, класс A не знает структуру класса B. как это обойти? Код: class A Название: Re: c++, синтаксис Отправлено: ilyagoo от Марта 08, 2009, 14:39 Сделать так, чтобы функция f() хотя бы в одном из классов возвращала ссылку или указатель на объект. с указателем проблем бы не было, а вот со ссылкой будет та же проблема. в любом случае задача поставлена именно таким образом :) Название: Re: c++, синтаксис Отправлено: BRE от Марта 08, 2009, 14:43 а вот со ссылкой будет та же проблема. Код
Код
в любом случае задача поставлена именно таким образом :) Название: Re: c++, синтаксис Отправлено: BRE от Марта 08, 2009, 14:56 Проверил, странно, но у меня и так собирается. :o
a.h Код
a.cpp Код
b.h Код
b.cpp Код
Что говорит стандарт по этому поводу. Вроде раньше, чтобы декларировать функцию возвращающую объект класса, этот класс должен быть уже полностью определен. Название: Re: c++, синтаксис Отправлено: ilyagoo от Марта 08, 2009, 15:35 Проверил, странно, но у меня собирается. :o Что говорит стандарт по этому поводу. Вроде раньше, чтобы декларировать функцию возвращающую объект класса, этот класс должен быть уже полностью декларирован. Название: Re: c++, синтаксис Отправлено: BRE от Марта 08, 2009, 15:45 спасибо, я уже решил точно так же. только вот хотелось бы знать, что это за фигня такая, неужели там идет включение заголовков дважды? Меня больше удивляет, почему здесь forward declaration достаточно?Кстати, у тебя какой компилятор? Нашел это: http://c2.com/cgi/wiki?ForwardDeclaration (http://c2.com/cgi/wiki?ForwardDeclaration) Про возвращение значения не знал. Название: Re: c++, синтаксис Отправлено: ilyagoo от Марта 08, 2009, 16:32 интересная статейка :)
VS2005 пропустила, а вот gcc-4.2.4 нет :( Название: Re: c++, синтаксис Отправлено: BRE от Марта 08, 2009, 16:39 интересная статейка :) gcc-4.3.2 - собирает.VS2005 пропустила, а вот gcc-4.2.4 нет :( Интересно, что в стандарте? Пока, как не пользовался, так и не буду. ;D Название: Re: c++, синтаксис Отправлено: ilyagoo от Марта 08, 2009, 16:46 на досуге посмотрю стандарт. сам я тоже таким не пользуюсь, меня и указатели вполне устраивают ;D
приятель просил помочь :) Название: Re: c++, синтаксис Отправлено: Winstrol от Марта 08, 2009, 17:55 Можно без ссылки, но придется несколько извращнуться.
Код
Название: Re: c++, синтаксис [решено] Отправлено: Winstrol от Марта 08, 2009, 18:07 И самый главный прикол
Так можно Код а так нет :) Код
|