Comment transférer une fonction membre d'une classe à utiliser dans une autre classe?

J'en ai fait deux identiques classes de X et Y, avec un pointeur vers chaque autre. Voir le code ci-dessous pour X. h, Y. h est identique à celui de tous X et Y interchangeables. Ce code donne cependant une erreur dans ma méthode Connect (erreur C2027: utilisation de type non défini sur "Y"). Dans X. h, j'ai hâte déclaré la classe Y, mais il ne sait pas que Y a une méthode nommée SetXPointer. Donc j'ai aussi besoin de déclarer avant cette méthode, correct?

Si j'essaie de le faire (ajout de la ligne Y::SetXPointer(X* pX_in); sous la ligne de la classe Y;), j'obtiens une erreur du compilateur C2761: "void A::SetXPointer(X *)' : la fonction de membre de redeclaration pas autorisés. Est-il possible d'utiliser une méthode publique de la classe Y de la classe X?

//X.h

#pragma once

#include "Y.h"

//Forward declaration
class Y;

class X
{
public:
    X(void) : data(24) {};
    ~X(void) {};
    int GetData() { return data; }
    void SetYPointer(Y* pY_in) { pY = pY_in; }
    Y* GetYPointer() { return pY; }
    void Connect(Y* Y_in) { pY = Y_in; Y_in->SetXPointer(this); }
private:
    int data;
    Y *pY;
};

source d'informationauteur physicalattraction