Все просто. Вы передаете символ в функцию, которая ожидает символ *.
struct FUNC{
char token;
FUNC *left;
FUNC *right;
};
должно быть
struct FUNC{
char* token;
FUNC *left;
FUNC *right;
};
и пока вы у него, вам также придется инициализировать символ *, чтобы вы могли создать функцию, подобную
FUNC* initFunc(const char* str,FUNC* left,FUNC* right)
{
// (FUNC*) is a cast to a type of pointer to FUNC. It is not needed if you write in C but
//since I saw cout in your code then if it's C++ you need to cast the results of malloc
FUNC* ret = (FUNC*) malloc(sizeof(FUNC);
int len = strlen(str);
ret->str = malloc(len+1);
strcpy(ret->str,str);
ret->left = left;
ret->right = right;
return ret;
}
Итак, в конце концов у вас будет что-то вроде этого:
//please note the existence of " " since this is not a char but a string literal
FUNC* node1 = initFunc("1",NULL,NULL);
cout << eval(node1)<< endl;