我想在 flex 程序中定义一个结构:
%{
#include <math.h>
#include <string>
#include <vector>
#include <iostream>
#include <map>
struct Node{
string action;
vector<Node> vecini[];
};
%}
即使我包含向量和字符串,我仍然会收到以下错误:错误:“字符串”没有命名类型错误:字段“vecini”的类型不完整
谢谢 !
我想在 flex 程序中定义一个结构:
%{
#include <math.h>
#include <string>
#include <vector>
#include <iostream>
#include <map>
struct Node{
string action;
vector<Node> vecini[];
};
%}
即使我包含向量和字符串,我仍然会收到以下错误:错误:“字符串”没有命名类型错误:字段“vecini”的类型不完整
谢谢 !
对字符串和向量使用完全限定的名称,例如:
std::string action;
^^^^^^^^^^^
请注意,字符串和向量仅在std
命名空间中定义,因此您需要指定完全限定名称来告诉编译器在哪个命名空间下找到它们。
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[];