Typumwandlung



  • Hallo Forum,

    ich komme bei einem Vererbungsproblem nicht weiter. Warum kann ich nicht einfach ein paar Pointer vergleichen, egal auf was sie zeigen? Hat das irgendein tieferen Sinn, oder war die fürsorgliche Mama da etwas übereifrig?

    class A {
    public:
    	int i;
    };
    
    class B {
    public:
    	char c;
    };
    
    class C : public A, public B {
    
    };
    
    int main() {
    	C *c=new C();
    	A *a=c;
    	B *b=c;
    
    	if (a==c) {}
    	if (a==b) {} // Geht nicht: Keine Konvertierung von 'B *' in 'A *'
    
    	return 0;
    }
    


  • Argh! Ich habs verstanden. Die Pointer Adressen werden ja nicht einfach kopiert. In a und b stehen verschiedene Adressen. a zeigt auf das A Objekt in C, welches zufällig auch der Anfang von C ist, während b auf das B Objekt in C zeigt und "hinter" A liegt. Deshalb kann der Pointervergleich auch nicht gehen...

    Erledigt und Mea Culpa. 😞



  • Exakt.


Log in to reply