我正在尝试在C ++ / CLI中解决以下问题,从而创建循环依赖项。这意味着它编译的方式,在EventHandler中,类仍然不存在;但是类需要创建一个EventHandler,因此类的顺序也不能反转。
我有两个类相互引用的原因,但编译器不会识别这些类。 (即编译错误)。
答案 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 ++方法是在头文件中声明所有类型及其函数,并仅将它们的定义放入代码文件中。对大项目来说,这样做更容易,特别是如果你有循环依赖。