Могу ли я установить условную точку останова в методе базового класса, который срабатывает, только если это экземпляр определенного производного класса?

Допустим, у меня есть базовый класс A и два производных класса B и C. Класс A имеет некоторый метод называется f ().

Есть ли способ установить условную точку останова в A :: f () в Visual Studio, которая будет срабатывать только тогда, когда мой 'this' на самом деле является экземпляром класса C?

Например


    void A::f()
    {
    some code and a breakpoint 
    }

    void foo(A* a)
    {
       a->f();
    }

    void bar()
    {
       A a;
       B b;
       C c;
       foo(&a); // breakpoint isn't hit
       foo(&b); // breakpoint isn't hit
       foo(&c); // breakpoint is hit
    }

I ' Мне удалось добиться этого, протестировав указатель виртуальной таблицы в состоянии точки останова, но должен быть лучший (более простой) способ.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Изменение исходного кода, как было предложено в комментариях, не является чем-то вроде решение, которое я ищу. Это нужно делать только с помощью отладчика VC ++.

13
задан Serge 7 July 2011 в 15:49
поделиться