-1

私の前の質問に続いて:

今私はこれを持っています:

xml_list *text1(xml_list *);
xml_list *text(xml_list *);

//operation: text1(elem)
xml_list *text1(xml_list *elem){
  if(isText(elem)){
    return Cons(elem,Nil());
  }
  else{
    return text(childeren(elem));
  }
}

//operation: text(elem)
xml_list *text(xml_list *elem){
  if(isEmpty(elem)){
    return Nil();
  }
  return append(text1(head(elem)),text(tail(elem)));
}

これを実行すると、xml_list *text1 に対して次の警告が表示されます。

incompatible pointer types passing 'xml_list *' (aka 'struct xml_list_struct *') to parameter of type 'xml *' (aka 'struct xml_struct *') [-Wincompatible-pointer-types]
 if(isText(elem)){

また、次の行のこの警告:

warning: incompatible pointer types passing 'xml_list *' (aka 'struct xml_list_struct *') to parameter of type 'xml *' (aka 'struct xml_struct *') [-Wincompatible-pointer-types]
 return Cons(elem,Nil());

再び別の警告:

    warning: incompatible pointer types passing 'xml_list *' (aka 'struct xml_list_struct *') to parameter of type 'xml *' (aka 'struct xml_struct *') [-Wincompatible-pointer-types]
 return text(children(elem));

これらの警告を消すにはどうすればよいですか??

4

1 に答える 1

1

エラーは一目瞭然です:

あなたのisTextConsおよびメソッドは(へのポインタ)をchildren期待しています。(へのポインタ)を渡しています。xml*xml_structxml_list*xml_list_struct

正しいポインターを渡す ( xml*) か、持っているポインターを受け入れるようにメソッドを修正する( xml_list*)ことによって、警告を消すことができます。

于 2013-04-04T13:08:58.963 に答える