在C ++ / CLI中需要循环依赖的解决方案(编译器错误)

时间:2012-01-31 22:59:26

标签: compiler-errors c++-cli circular-dependency

我正在尝试在C ++ / CLI中解决以下问题,从而创建循环依赖项。这意味着它编译的方式,在EventHandler中,类仍然不存在;但是类需要创建一个EventHandler,因此类的顺序也不能反转。

我有两个类相互引用的原因,但编译器不会识别这些类。 (即编译错误)。

1 个答案:

答案 0 :(得分:2)

您可以像在普通C ++中一样解决这个问题:首先声明类型及其函数,然后使用它们,然后仅在类型代码的其余部分之外定义它们。因此,如果您想将所有内容都放在一个文件中(而不是处理头文件等),您可以执行以下操作:

public ref class EventHandler
{
public:
    EventHandler(){} 

    void DataChanged(Object^ sender, DataTableEventArgs ^arg);
};

public ref class DTManager
{
    // all of DTManager's code goes here; you can use EventHandler::DataChanged
};

void EventHandler::DataChanged(Object^ sender, DataTableEventArgs ^arg);
{
    DTManager::DataChanged(arg);
}

正常的C ++方法是在头文件中声明所有类型及其函数,并仅将它们的定义放入代码文件中。对大项目来说,这样做更容易,特别是如果你有循环依赖。

相关问题