在flex错误C ++中定义结构

时间:2013-01-08 15:24:48

标签: c++ flex-lexer

我想在flex程序中定义一个结构:

%{

#include <math.h>
#include <string>
#include <vector>
#include <iostream>
#include <map>

struct Node{
    string action;
    vector<Node> vecini[];
};

%}

即使我包含矢量和字符串,我仍然会收到此错误: 错误:'string'没有命名类型 错误:字段'vecini'的类型不完整

谢谢!

2 个答案:

答案 0 :(得分:2)

对字符串和向量使用完全限定名称,例如:

std::string action;
^^^^^^^^^^^

请注意,字符串和向量仅在std命名空间中定义,因此您需要指定完全限定名称,以告知编译器在哪个命名空间下查找它们。

答案 1 :(得分:2)

vector和string都在std命名空间中,因此您应该将它添加到这些类型的成员变量的声明中。将代码更改为:

%{

#include <math.h>
#include <string>
#include <vector>
#include <iostream>
#include <map>

struct Node{
    std::string action;
    std::vector<Node*> vecini[];
};

%}

编辑:(感谢Kerrek SB):您也无法将Node的矢量定义为Node的成员。而是使用指向节点的向量,如:std::vector<Node*> vecini[];