メインコンテンツにスキップ

構造体または共用体作成

'Struct' および 'Union' のサブクラスはネイティブメモリによってサポートされており、生成コンストラクタではインスタンス化できません。

説明

#

アナライザーは、Struct または Union のサブクラスが生成コンストラクタを使用してインスタンス化された場合に、この診断を生成します。

FFI の詳細については、dart:ffi を使用した C の相互運用 を参照してください。

#

以下のコードは、クラス C が生成コンストラクタを使用してインスタンス化されているため、この診断を生成します。

dart
import 'dart:ffi';

final class C extends Struct {
  @Int32()
  external int a;
}

void f() {
  C();
}

一般的な修正

#

クラスで記述された構造体を割り当てる必要がある場合は、ffi パッケージを使用してください。

dart
import 'dart:ffi';
import 'package:ffi/ffi.dart';

final class C extends Struct {
  @Int32()
  external int a;
}

void f() {
  final pointer = calloc.allocate<C>(4);
  final c = pointer.ref;
  print(c);
  calloc.free(pointer);
}