tôi có:C++: Làm thế nào để gọi một hàm tầng lớp phụ huynh từ bên ngoài
class A{
public:
virtual void foo();
};
class B : public A{
public:
void foo();
};
B *ptr = new B();
Tôi muốn gọi của một foo()
TRỰC TIẾP sử dụng 'ptr' con trỏ.
Khi tôi cố gắng
(A*)ptr->foo();
nó vẫn gọi phiên bản của foo()
B. Làm cách nào để gọi phiên bản của A?
Điều này có khả thi không? Các lựa chọn thay thế là gì? Cảm ơn bạn.
Hãy xem http://en.wikipedia.org/wiki/Scope_resolution_operator – Pramod
Bạn có thể làm rõ ý của mình bằng cách "không hoạt động" không? Điều gì xảy ra chính xác khi bạn thử mã trên? –
Làm điều này hoàn toàn đánh bại mục đích của việc tạo ra một hàm ảo, vì vậy nó có nghĩa là người dùng của lớp 'A' đang trốn tránh ý định của nhà thiết kế lớp. Điều này có thể có nghĩa là có lỗi thiết kế ở đâu đó: hoặc 'A' không cung cấp tất cả các chức năng cần thiết, hoặc người dùng' A' không hiểu cái gì 'A' được cho là phải làm. –