Как переслать объявление функции-члена класса для использования в другом классе?

Я сделал два идентичных класса X и Y с указателем друг на друга. Смотрите код ниже для X.h, Y.h идентичен со всеми взаимозаменяемыми X и Y. Однако этот код выдает ошибку в моем методе Connect (ошибка C2027: использование неопределенного типа «Y»). В X.h я заранее объявил класс Y, но он не знает, что у Y есть метод с именем SetXPointer. Поэтому мне также нужно заранее объявить этот метод, правильно?

Если я пытаюсь сделать это (добавив строку Y :: SetXPointer (X * pX_in); под классом строки Y;), я получу ошибку компилятора C2761: & quot; void Y :: SetXPointer (X *) & apos; : переопределение функции-члена не допускается. Есть ли способ использовать открытый метод класса Y в классе 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;
};

Ответы на вопрос(4)

Ваш ответ на вопрос