Is there some possible way to make this code below...
# getting-started
z
Is there some possible way to make this code below work? The error that occurs is
Type of 'codecParameters' doesn't match the type of the overridden 'var' property 'expect var codecParameters: CodecParameters' defined in 'dev/ zt64/ ffmpegkt/ avformat/ Stream'.
Copy code
public expect abstract class Stream {
    // ... extra unrelated properties

    public abstract var codecParameters: CodecParameters
}

public expect class AudioStream : Stream {
    public override var codecParameters: AudioCodecParameters
}

public expect class VideoStream : Stream {
    public override var codecParameters: VideoCodecParameters
}
I need to be able to set the
codecParameters
on instances, even if I don't have the specific instance type, so like
Copy code
val stream: Stream
val newCodecParameters: CodecParameters
stream.codecParameters = newCodecParameters
y
How do you expect it to work if e.g.
AudioCodecParameters
is set onto a
VideoStream
? Perhaps what you want is generics?
Copy code
public expect abstract class Stream<Params: CodecParams> {
    // ... extra unrelated properties

    public abstract var codecParameters: Params
}

public expect class AudioStream : Stream<AudioCodecParameters> {
    public override var codecParameters: AudioCodecParameters
}

public expect class VideoStream : Stream<VideoCodecParameters> {
    public override var codecParameters: VideoCodecParameters
}