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

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

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

我有两个类互相引用的理由,但是编译器无法识别这些类。 (即编译器错误)。

最佳答案

您可以像在普通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++方法是在头文件中声明所有类型及其功能,并将其定义仅放入代码文件中。对于大型项目,这样做特别容易,特别是如果您具有循环依赖项。

关于compiler-errors - 需要C++/CLI中循环依赖的解决方案(编译器错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088327/

相关文章:

c++ - 从 System::String 中删除除数字和小数点以外的所有内容

interop - 如何将 C++/CLI 代码的某些部分编译为 native 代码,将某些部分编译为托管代码?

circular-dependency - 如何在 RxJS 中处理循环依赖的可观察量?

Android - 错误 : Unknown option '--no-crunch'

ruby - Sass --watch抛出错误 “NameError: uninitialized constant Listen::Listener”

eclipse - Titanium Studio错误: when I run the the default mobile project with Android emulator

c# - 如何解决这些编译错误?

c++ - 从 system::DateTime 中拆分日期和时间

mysql - 避免循环依赖: MySQL/Entity Framework

Java (Android) 库项目 - 如何设计可选模块?