Załóżmy, że mam pewną klasę bazową A i dwie pochodne klasy B i C. Klasa A zawiera pewną metodę zwaną f().Czy mogę ustawić warunkowy punkt przerwania w metodzie bazowej, który wyzwala tylko wtedy, gdy jest instancją określonej klasy pochodnej?
Czy istnieje sposób ustawienia warunkowego punktu przerwania w A :: f() w studiu graficznym, który zostanie trafiony tylko wtedy, gdy moje "to" jest faktycznie instancją klasy C?
Na przykład
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
}
udało mi się to osiągnąć poprzez testowanie wirtualny wskaźnik stole w stanie Breakpoint, ale nie musi być lepiej (łatwiej) sposób.
Z góry dziękuję.
EDYCJA: Modyfikowanie kodu źródłowego w sposób sugerowany w komentarzach nie jest rodzajem rozwiązania, którego szukam. Trzeba to zrobić tylko za pomocą debugera VC++.
przesłonić metodę w klasie pochodnej, aby po prostu wywołać klasę podstawową i umieścić tam punkt przerwania? – AJG85
@ AJG85 - tak, ale możliwe, że pliku binarnego nie można zmodyfikować. fwiw Nie sądzę, aby warunkowe BP pozwalały na to. –
Ah w takim przypadku odpowiedź brzmi "Nie". – AJG85