yacc.yにstructerrorStructとキューerrQueue定義があり、それを別の.hファイルに移動しました
が、定義がyacc.objとnode.objの両方にあるというリンクエラーが発生します。
新しいソリューションを作成しようとしましたが、それでも同じエラーが発生します
Error 9 error LNK2005: "class std::queue<struct errorStruct,class std::deque<struct
errorStruct,class std::allocator<struct errorStruct> > > errQueue" (?errQueue@@3V?$queue@UerrorStruct@@V?
$deque@UerrorStruct@@V?$allocator@UerrorStruct@@@std@@@std@@@std@@A) already defined in Node.obj yacc.obj
アップデート
最初:
Node.h//ノードクラス
yacc.yの場合//ルール+errorStruct+キューerrQueue+クラスErrList:「Node.h」と<キュー>を含む
それから:
Node.h//ノードクラス+errorStruct+キューerrQueue+クラスErrList:includes <queue>
yacc.y //ルール:includes "Node.h"
アップデート
Node.hで
struct errorStruct{
int errLineNum;
int errColNum ;
char * errMessage;
};
class ErrList{
public:
void pushError(int line,int col,char * message);
void popError();
void printErrors();
int getSize();
private :
queue <errorStruct> errQueue;
};
externErrList * se = new ErrList ();
Node.hの残りの部分は、クラスErrListまたはerrQueueの宣言を
使用せずに使用するだけで、yacc.yのこのクラスとは何の関係もありません。
se->pushError(...);