-1
Refereceを作成する方法はありません(そこにはありますか?)私は別のポインタへのポインタでそれを行う必要があります。これは私にエラーを与える:ポインタへのパスカル構文エラーSyntaxErrorと互換性のないタイプ
type
PNode = ^TNode;
TNode = record
char: char;
next: PNode;
children: PNode;
end;
PPNode = ^PNode;
var
current_node: PPNode;
function find_or_insert_peer(var node: PNode; character: char): PNode;
current_node := @find_or_insert_peer(current_node^, character)^.children;
x.pas(121,23) Error: Incompatible types: got "<address of function(var PNode;Char):^TNode;Register>" expected "PPNode"
x.pas(121,43) Fatal: Syntax error, ";" expected but "(" found
Fatal: Compilation aborted
助けてください私もこれをしようとしたが、それが原因でSyntaxError
current_node := @(find_or_insert_peer(current_node^, character)^.children);
編集
でコンパイルされません。私はこれが合法であることを示すためにC++のデモを作成しました。 http://cpp.sh/8mxe
「current_node」の割り当てに@が必要なのはなぜですか? – MartynA
'find_or_insert_peer'関数のアドレスを' PPNode'に代入しようとしていますが、これはうまくいきません。実際に**エラーメッセージに**という言葉を読むことは本当に重要です。エラーメッセージには、問題の内容と、2つのタイプが互換性がない理由が明確に分かります。 –
@KenWhite私は、レコードのアドレス(レコードポインタが関数によって返されたもの)のプロパティを必要とすることを強調する括弧を追加しようとしました。私は唯一のSyntaxError – Adam