Also sowas z.b.:
- Code: Alles auswählen
class A { ... };
class B : public A { ... };
B* p = new B();
Kann ich nun irgendwie prüfen ob B von A abgeleitet ist? Das ganze in C++ natürlich. Steh grad irgendwie aufm Schlauch.
class A { ... };
class B : public A { ... };
B* p = new B();B* p = new B();
A* a = dynamic_cast<A*>(p); // im Fehlerfall wird a = 0 gesetzt
if (!a) {
// dat war wohl nix....
}
else {
// alles ok
}#include <iostream>
class A {
virtual void f() = 0;
};
class B : public A {
void f() { std::cout << "B\n"; }
};
class C : public A {
void f() { std::cout << "C\n"; }
};
int main(int argc, char **argv) {
A* p1 = new B();
A* p2 = new C();
C* c1 = dynamic_cast<C*>(p1);
C* c2 = dynamic_cast<C*>(p2);
std::cout << "Test1: " << (c1 == 0) << "\n";
std::cout << "Test2: " << (c2 == 0) << "\n";
}[coolcat@sempron2800 C++Linux]$ g++ -o dyncast dyncast.cpp
[coolcat@sempron2800 C++Linux]$ ./dyncast
Test1: 1
Test2: 0
[coolcat@sempron2800 C++Linux]$