跳至主要内容

subtype_of_struct_class

类 '{0}' 不能扩展 '{1}',因为 '{1}' 是 'Struct'、'Union' 或 'AbiSpecificInteger' 的子类型。

类 '{0}' 不能实现 '{1}',因为 '{1}' 是 'Struct'、'Union' 或 'AbiSpecificInteger' 的子类型。

类 '{0}' 不能混入 '{1}',因为 '{1}' 是 'Struct'、'Union' 或 'AbiSpecificInteger' 的子类型。

描述

#

当一个类扩展、实现或混入一个扩展了 StructUnion 的类时,分析器会产生此诊断。类只能直接扩展 StructUnion

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

常见修复方法

#

如果你想定义一个结构体或联合体,它共享了另一个结构体或联合体声明的一些字段,那么直接扩展 StructUnion 并复制共享的字段。

dart
import 'dart:ffi';

final class S extends Struct {
  external Pointer f;
}

final class C extends Struct {
  external Pointer f;

  external Pointer g;
}