4

ffi にメモリを割り当てるときに、コードをもう少し堅牢にしようとしています。

私は次の関数を書きました:

void withMemory<T extends NativeType>(
    int size, void Function(Pointer<T> memory) action) {
  final memory = calloc<Int8>(size);
  try {
    action(memory.cast());
  } finally {
    calloc.free(memory);
  }
}

上記の関数を呼び出すには、次を使用します。

withMemory<Uint32>(sizeOf<Uint32>(), (phToken) {
  // use the memory allocated to phToken
});

これは機能しますが、ご覧のとおり、Uint32 とsizeOf.

私が本当に書きたいのは:

withMemory<Uint32>((phToken) {
  // use the memory allocated to phToken
});

問題は、ジェネリック型をどちらにも渡すことができないかcallocsizeOfエラーなしで渡すことができないことです。

[...] への型引数はコンパイル時の定数でなければなりませんが、型パラメーターは定数ではありません。型引数を定数型に変更してみてください。

この問題を回避する方法はありますか?

4

1 に答える 1