Взаимные ссылки между классами
От: Аноним  
Дата: 01.12.09 17:49
Оценка:
Здравствуйте
Изучая wxWidgets столкнулся с такой проблемой:
классы взаимно ссылаются друг на друга,если им нужно взаимодействовать между собой.
Возможно ли как-то указать компилятору, что спецификация класса будет "дальше по тексту".
И еще:
В туториалах по Qt встречал объявления вроде
class MyWidget;

Где дальше следовал код других классов, которые могли создавать экземпляры этого MyWidget и т.д. Когда применяется такой способ (и для чего он вообще нужен?). Чем то напоминает forward-объявление переменной или функции (с помощью extern). Может это поможет разрешить проблему перекрестных ссылок (хотя у меня не получилось — компилятор не может найти поля класса )
Re: Взаимные ссылки между классами
От: LaptevVV Россия  
Дата: 01.12.09 17:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте

А>Изучая wxWidgets столкнулся с такой проблемой:
А>классы взаимно ссылаются друг на друга,если им нужно взаимодействовать между собой.
А>Возможно ли как-то указать компилятору, что спецификация класса будет "дальше по тексту".
А>И еще:
А>В туториалах по Qt встречал объявления вроде
А>
А>class MyWidget;
А>

А>Где дальше следовал код других классов, которые могли создавать экземпляры этого MyWidget и т.д. Когда применяется такой способ (и для чего он вообще нужен?). Чем то напоминает forward-объявление переменной или функции (с помощью extern). Может это поможет разрешить проблему перекрестных ссылок (хотя у меня не получилось — компилятор не может найти поля класса )
Это оно и есть. Это называется объявлением класса. Используется просто для введния имени в область видимости.
Создавать объекты этого класса нельзя, а указатели (и ссылки) — можно.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Взаимные ссылки между классами
От: vvv104  
Дата: 02.12.09 10:32
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте

А>>Изучая wxWidgets столкнулся с такой проблемой:
А>>классы взаимно ссылаются друг на друга,если им нужно взаимодействовать между собой.
А>>Возможно ли как-то указать компилятору, что спецификация класса будет "дальше по тексту".
А>>И еще:
А>>В туториалах по Qt встречал объявления вроде
А>>
А>>class MyWidget;
А>>

А>>Где дальше следовал код других классов, которые могли создавать экземпляры этого MyWidget и т.д. Когда применяется такой способ (и для чего он вообще нужен?). Чем то напоминает forward-объявление переменной или функции (с помощью extern). Может это поможет разрешить проблему перекрестных ссылок (хотя у меня не получилось — компилятор не может найти поля класса )
LVV>Это оно и есть. Это называется объявлением класса. Используется просто для введния имени в область видимости.
LVV>Создавать объекты этого класса нельзя, а указатели (и ссылки) — можно.
Вызывать методы этого класса также нельзя.
Re[3]: Взаимные ссылки между классами
От: denisko http://sdeniskos.blogspot.com/
Дата: 02.12.09 10:41
Оценка:
Здравствуйте, vvv104, Вы писали:

V>Вызывать методы этого класса также нельзя.

Емнип, Можно если код вызовов находится за объявлением методов (т.е. в хидере ты таки да их не вызовешь, а в сурсе -- спокойно)
<Подпись удалена модератором>
Re[3]: Взаимные ссылки между классами
От: LaptevVV Россия  
Дата: 02.12.09 11:13
Оценка:
Здравствуйте, vvv104, Вы писали:

LVV>>Это оно и есть. Это называется объявлением класса. Используется просто для введния имени в область видимости.

LVV>>Создавать объекты этого класса нельзя, а указатели (и ссылки) — можно.
V>Вызывать методы этого класса также нельзя.
Да, конечно.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.