Dlaczego ten kod:Dziedziczenie konstruktory
class A
{
public:
explicit A(int x) {}
};
class B: public A
{
};
int main(void)
{
B *b = new B(5);
delete b;
}
Wynik tych błędów:
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&)
nie powinien B dziedziczą konstruktora jest?
(to jest za pomocą gcc)
To jest zupełnie zła, bo przez ponad rok, że doszło do kompilatora, które mogą rzeczywiście zbudować powyższy kod :-) – Mikhail
@Mikhail: Zarówno dzyń i g ++ powinien obsługiwać dziedziczenie konstruktorów: http: // dzyń .llvm.org/cxx_status.html http://gcc.gnu.org/projects/cxx0x.html Polecenie upvoting this as the correct answer. –
po prostu pytając, czy dziedziczony konstruktor będzie mógł uzyskać dostęp do/inicjować prywatnych członków klasy podstawowej? Czy musiałbym określić je jako chronione? – Markasoftware