式ツリーを再帰的に作成しようとしています。この関数が他の式変数を受け取るたびに、完全に正常に実行されます。しかし、整数(またはこの場合はそれをelseステートメントに渡す文字列)を受け取るたびに、プログラムがクラッシュします。
void buildExpressionTree (istream &ins, BinaryNode* p)
{
string buffer;
//read in from file
while ((ins.peek()!='\n') && (ins >> buffer))
{
if(p == NULL && buffer == "*","/","+","-")
{
p = new BinaryNode(buffer, NULL, NULL);
buildExpressionTree(ins,p->left);
buildExpressionTree(ins,p->right);
}
else
{
p = new BinaryNode(buffer, NULL, NULL);
}
}
}
p はツリーのルート (この関数に渡されると null) で、ins は入力ファイル ストリーム オブジェクトです。