I think what he's trying to say is can he create a bunch of structs with identifiers that are composed of his filename string plus whatever iteration of the loop he's at.
So, what the above code is trying to achieve is a bunch of datafile structures, named filename 1 ... filename n.
In short, no, I don't think so. You're creating static instances there and, as such, the compiler needs to be aware of their name at compile time.
In this case maybe it is better to include a data member for a filename in the structure and use it as identifier. Or use std::map with key as filename and value as the structure.