0

フレックスプログラムで構造体を定義したい:

%{

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

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

%}

ベクトルと文字列を含めても、次のエラーが発生します:エラー:'文字列'は型に名前を付けませんエラー:フィールド'vecini'は不完全な型です

ありがとうございました !

4

2 に答える 2

2

文字列とベクトルには完全修飾名を使用します。次に例を示します。

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

文字列とベクトルは名前空間でのみ定義されるstdため、完全修飾名を指定して、それらを検索する名前空間をコンパイラに指示する必要があることに注意してください。

于 2013-01-08T15:26:05.503 に答える
2

ベクトルと文字列の両方が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[];

于 2013-01-08T15:27:01.913 に答える