bir üst sınıf işlevi çağırmak için nasıl vardır:C++: dışarıda
class A{
public:
virtual void foo();
};
class B : public A{
public:
void foo();
};
B *ptr = new B();
Ben DOĞRUDAN 'ptr' işaretçi kullanan bir en foo()
aramak istiyorum. Ben
(A*)ptr->foo();
çalıştığınızda
hala foo()
ait B'nin versiyonunu çağırır. Bunun yerine A sürümünü nasıl arayabilirim?
Bu mümkün mü? Alternatifler nelerdir? Teşekkür ederim.
http://en.wikipedia.org/wiki/Scope_resolution_operator – Pramod
'a bir bakın "Çalışmıyor" ile ne demek istediğini açıklayabilir misiniz? Yukarıdaki kodu denediğinizde tam olarak ne olur? –
Bunu yapmak, bir işlevi sanallaştırma amacını tamamen ortadan kaldırır, yani sınıf A'nın kullanıcısının sınıf tasarımcısının amacından kaçtığı anlamına gelir. Bu muhtemelen bir yerde bir tasarım hatası olduğu anlamına gelir: ya "A" gerekli tüm işlevselliği sağlamıyor ya da "A" kullanıcısı ne yapması gerektiğini anlamıyor. –