#include<iostream>
using namespace std;
class A {
int i;
public:
// A() {cout<<"in A's def const\n";};
A(int k) {cout<<"In A const\n"; i = k; }
};
class B : public A {
public:
//B(){cout<<"in B's def const\n";};
B(int i) : A(i) {cout<<"in B const\n";}
};
class C : public B {
public:
C() {cout<<"in C def cstr\n";}
C(int i) : B(i) {cout<<"in C const\n";}
};
int main()
{
C obj=new C(2);
return 0;
}
, wenn ich diesen Code leite zeigt es Im Konstruktor 'C :: C()': 88c8237e3ffce7819f082b210069fd59.cpp: 19: 13: Fehler: keine passende Funktion für Aufruf von ' B :: B()‘Ausgabe von Multi-Level-Vererbung Programmcode
, warum dies geschieht, wie ich bin nur parametrisierte Konstruktoren caling explizit C() everywhere.??please helfen {cout < < "in C def cstr \ n";}
_ "ich parametrisiere nur explizit Konstruktoren explizit überall" _ - Schau noch einmal, du bist nicht. –
Wenn Sie keinen Basisklassenkonstruktor explizit angeben, wird der Standardkonstruktor aufgerufen. Da Ihre Klasse B keinen Basisklassenkonstruktor hat, haben Sie einen Fehler. –