Inheritance from Non-Protocol, Non-Class Type 'Cgpoint'

I want to create a custom CGPoint subclass to add some proprieties, but I get this error:

Inheritance from non-protocol, non-class type 'CGPoint'

I have no idea why this is not possible. My class is as simple as this:

import UIKit

class IYAttachPoint: CGPoint {

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

}

I've tried adding some libraries like CoreGraphics or QuartzCore without success. If there are already some questions or solutions to this problem, please point me in the right direction.

3 Answers

This is not possible because you want to inherit a struct from a class. CGPoint is a struct and therefore it does not support inheritance, although it can conform to protocols.

If you really want to do this, use composition instead of inheritance.

class IYAttachPoint {

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

You cannot inherit a class from Structure. Structure does not support Inheritance. But if you want, you may use extension for structure.

The error message you are getting is telling you exactly what is wrong. The only things that can be used as base classes are, well, classes. You can also have your class/struct/enum conform to a protocol but only classes can be used for inheritance. Since CGPoint is a struct it can't be used for subclassing purposes.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest