003
17.12.2004, 11:13 Uhr
virtual
Sexiest Bit alive (Operator)
|
@Th ist wirklich nicht das Problem:
C++: |
struct ClassA { void method1() { method2(); } void method2() { } };
|
Sollte Durch den Compiler gehen. Wenn nicht, dann nimm bitte einen ANSI C++ Compiler: Für Methoden, die in der Klasse nicht nur deklariert, sondern auch definiert werden gilt nicht die strenge Point-of-Declaration Regel, welche Du da wohl im Sinn hast. Defacto bedeutet das, daß man mit Inline methoden auch auf Members zugreifen kann, die erst nach der Methode selbst definiert wurden:
C++: |
struct ClassB { void init() { c = 0; }
char c; };
|
ist auch legal. Da dies aber eben für einen C gewöhnten Programmierer eher eine Verwirrung darstellt, wird in der einschlägigen Literatur diese Vorgehensweise nicht empfohlen, sondern eher:
C++: |
struct ClassB { void init();
char c; };
inline void ClassB::init() { c = 0; }
|
Nichtsdestotrotz: das ist überhaupt nicht das Problem: der Originalposter hat das Problem, daß der Compiler über eine Redefinition meckert, also method2 als Bezeichner zwei konkurrierender Definitionen kennt. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |