跳到主内容

creation_of_struct_or_union

'Struct' 和 'Union' 的子类由原生内存支持,不能通过生成式构造函数实例化。

描述

#

当使用生成式构造函数实例化 StructUnion 的子类时,分析器会生成此诊断。

有关 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);
}