跳至主要內容

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