Bonjour à tous,
Je tente d’écrire un wrapper en C++ pour une bibliothèque qui est à l’origine en C. Le but est de me simplifier la vie, profiter du RAII et de l’OO où c’est pertinent et utile, etc.
J’ai deux classes interdépendantes, et je ne trouve pas de solution.
class A {
...
B createB ();
};
class B {
...
A createA ();
};
Un objet A peut créer un objet de type B et vice-versa.
Je n’utilise pas de références/pointeurs car les objets sont particulièrement peu coûteux à copier. En fait, je ne manipule que des handles.
sizeof(A) = 2*sizeof(void*)
par exemple.
Je n’ai pas besoin non plus que les classes soient polymorphes.
A ne contient pas de référence/pointeur vers B, et B ne contient pas de référence/pointeur vers A. Un objet B créé à partir d’un A est indépendant du A d’origine, et un objet A créé à partir d’un B est aussi indépendant du B d’origine.
Que puis-je faire ? Est-ce que ce que je cherche à faire est impossible ? Est-ce que je suis obligé que soit createA() soit createB() retourne une référence ou un pointeur ?
Est-ce que mon approche est maladroite, idiote ou totalement inutile et est-ce que je devrais me contenter d’utiliser la bibliothèque C telle quelle ?
Faire une déclaration antaicipée de A et/ou de B ne semble pas résoudre le problème. J’ai aussi essayé de "rajouter" une méthode après la déclaration de la classe en la déclarant volontairement en-dehors, p.ex. B A::createB ();`, mais le compilateur n’en veut pas non plus.
Merci. ET bonne année.