C ++前向结构错误声明

时间:2014-01-08 18:27:38

标签: c++ struct forward-declaration

我正在尝试用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'的声明

我想拥有该结构并将其他结构添加到该有序映射中,因此它就像一棵树。

感谢任何可以提供帮助的人!

2 个答案:

答案 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

相关问题