Нужно решение для циклической зависимости в C ++ / CLI (ошибка компилятора) - PullRequest
1 голос
/ 01 февраля 2012

Я пытаюсь решить следующую проблему в C ++ / CLI, которая создает циклическую зависимость.Имея в виду способ компиляции, класс еще не существует в EventHandler;но класс должен создать EventHandler, и, следовательно, порядок классов также нельзя изменить.

У меня есть причины для того, чтобы оба класса имели ссылки друг на друга, но компилятор не распознает классы.(т.е. ошибка компилятора).

1 Ответ

2 голосов
/ 01 февраля 2012

Вы решаете это так же, как в обычном 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 ++ - объявить все типы и их функции вЗаголовочные файлы и поместите только их определения в файлы кода.Делать это таким способом намного проще для больших проектов, особенно если у вас круговые зависимости.

...