Giả sử tôi có một số lớp cơ sở A và hai lớp dẫn xuất B và C. Lớp A có một số phương thức được gọi là f().Tôi có thể đặt điểm ngắt có điều kiện trong phương thức lớp cơ sở chỉ kích hoạt nếu đó là một thể hiện của lớp dẫn xuất cụ thể không?
Có cách nào để đặt điểm ngắt có điều kiện trong A :: f() trong studio trực quan sẽ chỉ được nhấn khi 'this' của tôi thực sự là một thể hiện của lớp C không?
Ví dụ
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
}
tôi đã quản lý để đạt được điều đó bằng cách kiểm tra con trỏ bảng ảo trong tình trạng breakpoint nhưng có nhận được một tốt hơn (dễ hơn) cách.
Xin cảm ơn trước.
EDIT: Sửa đổi mã nguồn như đã được đề xuất trong nhận xét không phải là loại giải pháp mà tôi đang tìm kiếm. Nó phải được thực hiện chỉ bằng phương tiện của trình sửa lỗi VC++.
ghi đè phương thức trong lớp dẫn xuất để chỉ cần gọi lớp cơ sở và đặt điểm ngắt của bạn ở đó? – AJG85
@ AJG85 - có, nhưng có thể nhị phân không thể sửa đổi được. fwiw Tôi không nghĩ rằng BP có điều kiện cho phép điều này được thực hiện. –
Trong trường hợp đó câu trả lời là "Không" – AJG85