Temel sınıfımda korumalı işlevi çağırmıyorum. Niye ya? Bu şuna benzer: 'adı :: sınıf :: f2': Ben error C2248 olsun msvc olarak temel sınıf korumalı işlevleri arayabilir mi?
class B : B2
{
public:
virtual f1(B*)=0;
protected:
virtual f2(B*) { codehere(); }
}
class D : public B
{
public:
virtual f1(B*b) { return f2(b); }
protected:
virtual f2(B*b) { return b->f2(this); }
}
sınıfın 'adı :: sınıf'
yılında beyan korumalı üyesi erişemez gcc Hata alıyorum: 'sanal int adı :: class :: f2()' korunuyor.
Neden? Korunan üyelerin, aramanın türetilmiş sınıflar için olduğunu düşündüm.
En azından, düzeltmemizi istediğiniz hataları derleyip oluşturacak kod ekleyin. Yukarıdaki kodda, sorununuzu çözmenin çok fazla başka sözdizimi hataları vardır. –
i martin ile aynı fikirdeyim. size yardım etmemizi isterseniz, kodunuzu C++ yapma konusunda biraz zaman ayırın (iade türleri, noktalı virgüller ve diğer şeyleri ihmal etmeyin) –