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

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

Войти
Регистрация
Восстановить пароль
 
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
#1

Почему вызывается не тот метод? - C++

07.11.2012, 21:13. Просмотров 294. Ответов 2
Метки нет (Все метки)

При вызове метода Highlight() у экземпляра SomrClass вызывается базовая реализация

C++
1
2
3
4
5
6
7
class cBackLightListener
    {
        public:
            cBackLightListener();
            ~cBackLightListener();
            virtual void Highlight();
    };
C++
1
2
3
4
void cBackLightListener::Highlight()
    {
    
    }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class cBackLightDispatcher
    {
        public:
            cBackLightDispatcher();
            virtual ~cBackLightDispatcher();
            void AddListener(cBackLightListener item);
            void RemoveListener();
            void RequestBackLighting();
            void CancelBackLighting();
 
        private:
            std::vector <cBackLightListener> ListenerContainer; 
                    
    };
C++
1
2
3
4
5
6
7
8
9
10
11
12
void cBackLightDispatcher::AddListener(cBackLightListener item)
    {
        ListenerContainer.push_back(item);
    }
    
    void cBackLightDispatcher::RequestBackLighting()
    {
        for(int i = 0; i < ListenerContainer.size(); i++ )
        {
            ListenerContainer[i].Highlight();
        }
    }
C++
1
2
3
4
5
6
7
8
9
class SomeClass :  public cBackLightListener
    {
    public:
        
        //.....
 
        void Highlight();
 
    };
Подскажите плиз в чем проблема

- пытался делать чисто виртуальную функцию - в этом случае ругается в другом классе - cBackLightDispatcher , где обьекты cBackLightListener добавляются в vector
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2012, 21:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему вызывается не тот метод? (C++):

Почему не вызывается метод setColor? - C++
Код использующий наследование, не могу вызвать метод setColor объект d; #include &lt;iostream&gt; #include &lt;string&gt; using namespace...

Наследование: почему вызывается метод базового класса, а не производного? - C++
Всем привет, такой вопрос, почему вызывается в данном коде метод базового класса, а не производного (без указания ключевого слова virtual...

Вызывается не тот конструктор - C++
При выполнении кода stroka* p=new stroka; p=new stroka(&quot;absd&quot;); Используется конструктор с сигнатурой (const char), а не с...

Вызывается не тот конструктор - C++
Имеется класс, вот часть его объявления: class MQLCopir : protected ClientCopir { private: bool _fatal; std::string...

Почему не вызывается деструктор? - C++
Всем доброго времени суток! Подскажите пожалуйста - почему не вызывается деструктор при выполнении строки 48? #include&lt;iostream&gt;...

Почему вызывается деструктор? - C++
Доброго времени суток. Написал такой код: struct O { virtual ~O() { cout &lt;&lt; &quot;hey&quot;; } }; struct...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.11.2012, 21:16 #2
виртуальные функции работают только для указателяей и ссылок
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
07.11.2012, 21:24  [ТС] #3
исправил
C++
1
std::vector <cBackLightListener*> ListenerContainer;
C++
1
2
3
4
for(int i = 0; i < ListenerContainer.size(); i++ )
        {
            ListenerContainer[i]->Highlight();
        }
и все заработало верно

Спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 21:24
Привет! Вот еще темы с ответами:

Почему не вызывается конструктор копирования? - C++
...У меня в книге описаны случаи при которых вызывается конструктор копирования. Один из этих случаев: : &quot;Когда аргумент имеет тип...

Почему не вызывается конструктор перемещения? - C++
#include &lt;iostream&gt; #include &lt;vector&gt; class Object { public: Object() { std::cout &lt;&lt; &quot;Object()&quot; &lt;&lt; std::endl; ...

Почему не вызывается конструктор копии? - C++
Почему не вызывается конструктор копии? class CPoint { friend std::istream &amp;operator&gt;&gt;(std::istream &amp;in, CPoint &amp;obj); friend...

Почему вызывается конструктор, а не создание массива? - C++
struct KTest { KTest(int _a, double _b, long long _c) : a(_a), b(_b), c(_c) {} friend ostream&amp; operator &lt;&lt; (ostream&amp; os, KTest const&amp;...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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