This is my inheritance structure

**Protocols**

```
protocol BaseProtocol {
}

protocol ChildProtocol: BaseProtocol {
}

```

**Classes**

```
class BaseClass: NSObject {

    var myVar: BaseProtocol!
}

class ChildClass: BaseClass {

    override var myVar: ChildProtocol!
}

```

I'm receiving a compiler error:

```
Property 'myVar' with type 'ChildProtocol!' cannot override a property with type 'BaseProtocol!'

```

What is the best approach to achieve this?

**UPDATE**

I updated the question trying to implement the solution with generics but it does not work :( This is my code (now the real one, without examples)

*Protocols*

```
protocol TPLPileInteractorOutput {
}

protocol TPLAddInteractorOutput: TPLPileInteractorOutput {  

    func errorReceived(error: String)
}

```

*Classes*

```
class TPLPileInteractor<T: TPLPileInteractorOutput>: NSObject, TPLPileInteractorInput {

    var output: T!
}

```

And my children

```
class TPLAddInteractor<T: TPLAddInteractorOutput>: TPLPileInteractor<TPLPileInteractorOutput>, TPLAddInteractorInput {
}

```

Well, inside my `TPLAddInteractor` I can't access `self.output`, it throws a compiler error, for example

```
'TPLPileInteractorOutput' does not have a member named 'errorReceived'

```

Besides that, when I create the instance of `TPLAddInteractor`

```
let addInteractor: TPLAddInteractor<TPLAddInteractorOutput> = TPLAddInteractor()

```

I receive this other error

```
Generic parameter 'T' cannot be bound to non-@objc protocol type 'TPLAddInteractorOutput'

```

Any thoughts?