Re: [eigen] sparse matrix wrapper flavour |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
Hi, all this sounds very good, On Wednesday 25 June 2008 23:43:20 Gael Guennebaud wrote: > { > typename SparseWrapper<MyMatrixType, AccessPattern>::type w(m); > // use w according to the access pattern you requested > } > // at the deletion of the wrapper, m is automatically updated. I see, sounds good. > To avoid redundancy, I see two approaches to implement such wrappers: > 1 - they inherit the corresponding sparse matrix class and simply > overload the constructor, destructor and store a reference to m; > 2 - they store an object of the corresponding sparse matrix type and > define operator* and operator-> such that they behave like a pointer. > > I think both approaches are more or less equivalent: > (1) allows to overwrite some matrix functions if needed, > (2) implies a pointer like style that emphasis the fact your dealing > with something different Given the choice, I tend to prefer storing a member object rather than inheriting. In your particular case, if you go for inheritance, since your wrapper class will be a different type than the wrapped class, it will lead to more template instantiations when you construct expressions classes like e.g. wrapper.col(i). So, I vote for (2). The only thing is, make sure that the wrapper class doesn't have a member (method or data) with the same name as a member of the wrapped class. So that if the user forgets to use "->" instead of "." he will get a compiler error. Otherwise the bug could be very hard to spot! Cheers, Benoit
Attachment:
signature.asc
Description: This is a digitally signed message part.
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |