Виртуальные функции и connect |
Здравствуйте, гость ( Вход | Регистрация )
Виртуальные функции и connect |
Ponter |
4.6.2012, 15:27
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 11 Регистрация: 4.3.2010 Пользователь №: 1504 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем привет. Есть код:
Далее в некоем классе я пишу:
И вот тут встает вопрос: почему при connect вызывается слот класса Main, хотя указатель уже указывает на класс A? Это решается новой записью, т.е. A *a = new A(); main = a; connect(this, SIGNAL(sgMainSignal()), main, SLOT(add())); Но тогда другой вопрос: что будет если при каждой смене указателя (то на А, то на В) буду писать connect и считается ли это хорошим тоном? Спасибо |
|
|
Алексей1153 |
4.6.2012, 20:17
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
1 ) не стоит пользоваться именем "main" - это так, на будущее
2 ) почему указатель "a" использован до объявления ? 3 ) а можно ли делать слоты виртуальными ? Или - какой в этом смысл ? 4 ) "почему при connect вызывается слот класса Main" - слот Add() есть у всех трёх классов. Указывай на здрровье )) 5 ) каждый коннект будет создавать дополнительный вызов слота. Чтобы избежать этого, нужно либо дисконнектить, либо указывать флаг неповторности коннекта ==================== и ещё - расскажи, что ты хочешь сделать ? |
|
|
Текстовая версия | Сейчас: 27.1.2025, 7:34 |