Error: invalid subtyping in definition of a type

I am trying to understand why I get an error

ERROR: invalid subtyping in definition of StringIndexVector

where I try to define

struct StringIndexVector <: AbstractVector
    svec::Vector{String}
    index::Vector{Integer}
end

but the below is fine. I think AbstractVector is an AbstractType so I can define a subtype under it.

struct StringIndexVector
    svec::Vector{String}
    index::Vector{Integer}
end

I am on Julia 0.6.2

You need to define the T in AbstractVector{T} where T e.g.

struct StringIndexVector{T} <: AbstractVector{T}
    svec::Vector{String}
    index::Vector{Integer}
end

For efficiency, you probably want to use Int instead of Integer in your index-Vector (or parameterize on the integer type).

5 Likes

On julia-0.6.2 I’m getting the same error when trying to declare

struct wrapping_hypercube{N,T} <: hypercube{N,T} end

hypercube is:

struct hypercube{N,T}
...
end

The answer is in the manual: I can’t subtype from concrete types. Thanks!

2 Likes