我想在flex程序中定义一个结构:
%{
#include <math.h>
#include <string>
#include <vector>
#include <iostream>
#include <map>
struct Node{
string action;
vector<Node> vecini[];
};
%}
即使我包含矢量和字符串,我仍然会收到此错误: 错误:'string'没有命名类型 错误:字段'vecini'的类型不完整
谢谢!
答案 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[];