У меня есть следующая проблема циклической зависимости, которую я пытаюсь решить:
typedef std::map<int, my_class> my_map;
class my_class {
...
private:
my_map::iterator iter;
};
class otherclass{
public:
my_map::iterator getIter();
private:
my_map map;
};
Компилятору это не нравится, так как my_class не был объявлен перед typedef.для форвард-объявления myclass следующим образом:
class my_class;
typedef std::map<int, my_class> my_map;
class my_class {
...
private:
my_map::iterator iter;
};
class otherclass{
public:
my_map::iterator getIter();
private:
my_map map;
};
Я получаю «ошибку: прямое объявление my_class».
Как мне разорвать этот порочный цикл?*
Извините, но я должен пересмотреть свой вопрос, так как я заметил, что мое представление немного неверно.
Ниже приводится правильное представление моей проблемы:
class my_container;
typedef std::map<int, my_container> my_map;
class my_class {
...
private:
my_map::iterator iter;
};
class my_container {
public:
my_class a_method();
private:
vector<my_class> v;
};
class otherclass{
public:
my_map::iterator a_method();
my_class another_method();
my_container yet_another_method();
private:
my_map map;
};
Извините за это