subtype_of_struct_class
类 '{0}' 不能扩展 '{1}',因为 '{1}' 是 'Struct'、'Union' 或 'AbiSpecificInteger' 的子类型。
类 '{0}' 不能实现 '{1}',因为 '{1}' 是 'Struct'、'Union' 或 'AbiSpecificInteger' 的子类型。
类 '{0}' 不能混入 '{1}',因为 '{1}' 是 'Struct'、'Union' 或 'AbiSpecificInteger' 的子类型。
描述
#当一个类扩展、实现或混入一个扩展了 Struct
或 Union
的类时,分析器会产生此诊断。类只能直接扩展 Struct
或 Union
。
有关 FFI 的更多信息,请参阅 使用 dart:ffi 进行 C 互操作。
示例
#以下代码会产生此诊断,因为类 C
扩展了 S
,而 S
扩展了 Struct
。
dart
import 'dart:ffi';
final class S extends Struct {
external Pointer f;
}
final class C extends S {
external Pointer g;
}
常见修复方法
#如果你想定义一个结构体或联合体,它共享了另一个结构体或联合体声明的一些字段,那么直接扩展 Struct
或 Union
并复制共享的字段。
dart
import 'dart:ffi';
final class S extends Struct {
external Pointer f;
}
final class C extends Struct {
external Pointer f;
external Pointer g;
}