web-dev-qa-db-ja.com

非プロトコル、非クラス型 'CGPoint'からの継承

プロパティを追加するカスタムCGPointサブクラスを作成したいのですが、次のエラーが発生します。

非プロトコル、非クラス型 'CGPoint'からの継承

なぜこれが不可能なのか私にはわかりません。私のクラスはこれと同じくらい簡単です:

import UIKit

class IYAttachPoint: CGPoint {

  var holder: String = "No holder"
  var unavailable: Bool = false

}

CoreGraphicsやQuartzCoreなどのライブラリを追加しようとしましたが、成功しませんでした。この問題に対する質問または解決策がすでにある場合は、正しい方向に向けてください。

19
Philip Müller

クラスから構造体を継承したいので、これは不可能です。 CGPointは構造体であるため、プロトコルに準拠することはできますが、継承をサポートしていません。

本当にこれを実行したい場合は、継承ではなくコンポジションを使用してください。

class IYAttachPoint {

  var point:CGPoint?
  var holder: String = "No holder"
  var unavailable: Bool = false
}
20
codester

表示されるエラーメッセージは、何が問題なのかを正確に示しています。基本クラスとして使用できるのはクラスだけです。クラス/構造体/列挙型をプロトコルに準拠させることもできますが、継承に使用できるのはクラスだけです。 CGPointは構造体であるため、サブクラス化の目的には使用できません。

0
Lance

構造からクラスを継承することはできません。構造は継承をサポートしていません。ただし、必要に応じて、構造の拡張を使用できます。

0
Manoj