Hi
I am encountering compilation errors when multiple nimbleFunctionLists share the same "contains" argument within a single setup function. If I duplicate the nimbleFunctionVirtual code and create multiple names for essentially the same thing then my code compiles and runs as expected. If I remove the apparently redundant calls to nimbleFunctionVirtual my code will not compile. My understanding (based on section 15.4.8 of the manual) is that the call to nimbleFunctionVirtual creates a class definition, so it does not make sense to me that two nimbleFunctionLists should not be able to share the same class definition.
My operating system is Ubuntu 18.04.3 LTS (Bionic Beaver).
I attach some code that compiles and runs fine as it is. To obtain the compiler error simply search for all instances of "Out2" and replace with "Out". This results in the function lists "getState" and "getDeriv" sharing the same class definition (classVoidInDouble0Out) and the compiler does not accept that.
There are more explanations of what my code actually does in the header of the attached file. Please also let me know if you think the algorithm I've developed here is worthy of incorporation into nimble, or would be better released as a separate package.
If this is not a bug in nimble then a clearer error message would be a very valuable development. The error message says "duplicate symbol name: getState", so I checked many times and found no duplication of getState. The problem was that I was using classVoidInDouble0Out multiple times, so an error message pointing to illegal recycling of classVoidInDouble0Out (and not getState) would have really helped. It took me several days of blind stumbling before I hit on the Out2 solution.
Many thanks for continuing the nimble development. It's really a great tool!
All the best
David