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