我制作了两个相同的类 X 和 Y,并带有一个指向彼此的指针。Xh,Yh 与所有交换的 X 和 Y 相同,请参见下面的代码。但是,此代码在我的方法 Connect 中出现错误(错误 C2027:使用未定义的类型“Y”)。在 Xh 中,我已经前向声明了类 Y,但它不知道 Y 有一个名为 SetXPointer 的方法。因此我也需要转发声明这个方法,对吗?
如果我尝试这样做(在行类 Y; 下添加行 Y::SetXPointer(X* pX_in);),我会收到编译器错误 C2761: 'void Y::SetXPointer(X *)' : member function redeclaration不允许。有没有办法在 X 类中使用 Y 类的公共方法?
// 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;
};