Я хочу определить структуру в гибкой программе:
%{
#include <math.h>
#include <string>
#include <vector>
#include <iostream>
#include <map>
struct Node{
string action;
vector<Node> vecini[];
};
%}
и хотя я включаю вектор и строку, я все еще получаю следующие ошибки:
ошибка: «строка» не называет тип
ошибка: поле «vecini» имеет неполный тип
Спасибо !
И вектор, и строка находятся в std
пространство имен, поэтому вы должны добавить его к объявлению переменных-членов этих типов. Измените код на:
%{
#include <math.h>
#include <string>
#include <vector>
#include <iostream>
#include <map>
struct Node{
std::string action;
std::vector<Node*> vecini[];
};
%}
РЕДАКТИРОВАТЬ: (спасибо Kerrek SB): также вы не можете определить вектор узла как члена узла. Вместо этого используйте вектор указателей для узла следующим образом: std::vector<Node*> vecini[];
Используйте полные имена для строки и вектора, например:
std::string action;
^^^^^^^^^^^
Обратите внимание, что строка и вектор определены только в std
namespace, поэтому вам нужно указать полное имя, чтобы указать компилятору, в каком пространстве имен их искать.