7 Aralık 2008, Pazar
Miras kurucular
Neden bu kod yok:
class A
{
public:
explicit A(int x) {}
};
class B: public A
{
};
int main(void)
{
B *b = new B(5);
delete b;
}
Bu neden hatalar:
main.cpp: In function ‘int main()’: main.cpp:13: error: no matching function for call to ‘B::B(int)’ main.cpp:8: note: candidates are: B::B() main.cpp:8: note: B::B(const B&)
B private miras gerekmez mi?
(bu gcc kullanıyor)
CEVAP
12 Ocak 2009, PAZARTESİ
C 03 standart kurucular miras olamaz ve kendi tabanı uygulaması çağırarak onları tek elle tek miras. Eğer derleyici C 11 standardını destekliyorsa, yapıcı bir miras var. Daha fazlası için Wikipedia C 11 article bkz. Yeni standart ile yazmak:
class A
{
public:
explicit A(int x) {}
};
class B: public A
{
using A::A;
};
Bunu Paylaş:
Miras kurucular...
Arama sanal fonksiyonlar içinde kurucu...
Virtualenv sizin küresel dan özel pake...
Bina büyük, kurucular uzun parametre l...
Nasıl miras Nitelikleri uygun mu?...