我有以下要解决的循环依赖问题:
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;
};
为此事道歉