我试图在C++/CLI中解决以下问题,它创建了一个循环依赖。这意味着当类在EventHandler中时,它的编译方式还不存在;但是类需要创建一个EventHandler,因此类的顺序也不能颠倒。
我有理由让这两个类相互引用,但编译器无法识别这些类。(即编译器错误)。
发布于 2012-02-01 07:32:30
解决此问题的方法与在普通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++方法是在头文件中声明所有类型及其函数,并只将其定义放入代码文件中。对于大型项目来说,使用这种方法要容易得多,特别是当你有循环依赖的时候。
https://stackoverflow.com/questions/9088327
复制相似问题