2016-01-27 18 views
5

Dış sınıfın özel bölümünde yuvalanmış bir sınıftan miras almak istiyorum. Mümkün mü?Arkadaşlık ve özel yuvalanmış sınıf devralma

class A { 
    friend class B; 
    friend class C; 
    private: 
    class NiceNestedClass { 
    }; 
}; 

class C { 
    void a() { 
    A::NiceNestedClass works; 
    } 
}; 

class B : A::NiceNestedClass{ 
}; 

NiceNestedClass örneklemesi sorun değil. Fakat g ++, ondan miras almama izin vermiyor. Herhangi bir geçici çözüm var mı?

g++ -std=c++11 a.c -o a 
a.c:5:11: error: ‘class A::NiceNestedClass’ is private 
    class NiceNestedClass { 
     ^
a.c:15:14: error: within this context 
class B : A::NiceNestedClass{ 

g ++ 4.8.4, std = C++ 11

+0

Çalışıyor: http://rextester.com/YIFH82076. Aldığınız hatayı postalayabilir misiniz? Muhtemelen ilgisiz. –

cevap

3

Bu bir hata olabilir. gcc.godbolt.org kullanma ve çınlama, ICC her sürümü ile ve gcc 4.9.2 veya sonraki

#include <iostream> 

class A { 
    friend class B; 
    friend class C; 
    private: 
    class NiceNestedClass { 
    }; 
}; 

class C { 
    void a() { 
    A::NiceNestedClass works; 
    } 
}; 

class B : A::NiceNestedClass{ 
}; 

int main(){ 

} 

Works çalışan. 4.8.x veya altındaki herhangi bir gcc ile başarısız olur.