我正在尝试用C ++做到这一点:
struct sagrup
{
int imps;
int clicks;
int uclicks;
int conversions;
int * variable;
unordered_map<int, struct sagrup> siguiente;
};
unordered_map<int, struct sagrup> agrupacion;
我收到错误:转发'struct sagrup'的声明
我想拥有该结构并将其他结构添加到该有序映射中,因此它就像一棵树。
感谢任何可以提供帮助的人!
答案 0 :(得分:3)
你有几个问题:
首先,您无需在任何地方使用struct
。其次,尝试使用不完整类型和需要完整类型定义的模板(否则它不知道如何构造它)。该地图应该被声明为指针,而不是sagrup
的另一个实例。
结果代码如this:
struct sagrup
{
int imps;
int clicks;
int uclicks;
int conversions;
int * variable;
unordered_map<int, sagrup*> siguiente;
};
unordered_map<int, sagrup> agrupacion;
答案 1 :(得分:1)
在完全定义类型之前,编译器对类型一无所知;即成员是什么,他们的大小和完整的
前向声明仅用于引用和指向此类结构的指针。
或者您也可以使用:
unordered_map<int, sagrup*> siguiente;
在struct