You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Wednesday, January 4th 2012, 5:48pm

Konstruktoren Vererbung

Hallo Coder Freunde !
Ich schon wieder

brauche eure hilfe bei einer kleinen Verständinss Aufgabe

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class F
{
public:
 
	float d;
 
	F(float _x) { d = _x; }
 
 
};
 
class K : public F
{
public:
 
	int i;
   K(int _k) { i = _k; }
 
 
};
 
int main()
{
 
	K a(3);
	return 0;
 
}


Die frage ist hier wo ist der Fehler ?

Also der Fehler ist meiner Meinung nach das der Aufruf des Konstruktors K() das selbe ist wie F() bzw. beim Aufruf des Konstruktors K() wird der Konstruktor F() aufgerufen da F() vererbt wird ist das richtig ?
Das Problem ist dann das F() einen float erwartet K() jedoch einen int reinschreibt ?

Jetzt ist nur die Frage warum funktioniert es auch nicht wenn ich einen Zweiten Konstruktor in F() implementiere also den Konstrukor überlade ?
Der Compiler gibt übrigens als Fehlermeldung aus "F Kein geeigneter Standartkonstruktor verfügbar" was ja eigentlich zu meiner Vermutung passt oder ?

Danke schon im Vorraus für eure Hilfe

2

Wednesday, January 4th 2012, 9:53pm

Von F wird nur der Basiskonstruktor also der ohne Parameter aufgerufen. Kannst aber den Konstruktor der Basisklasse aufrufen indem du ihn in die Initialisierungsliste eines Konstruktors der abgeleiteten Klasse schreibst.

z.B.

C/C++ Quellcode

1
K (int k) : F (float k)

Similar threads

Social bookmarks