BaseSort member variable?
-
On 14/07/2016 at 12:06, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 17
Platform: Windows ; Mac OSX ;
Language(s) : C++ ;---------
Hi,I'm looking for a way to implement a variable sorting crtiteria in my BaseSort class, but I'm not getting it to work. I just want to sort an array with vectors using a tolerance value (eps) :
class SortVector : public maxon::BaseSort <SortVector> { public: static Bool LessThan(Vector a, Vector b) { if (a.z < b.z - eps) return true; if (a.z > b.z + eps) return false; return (a.x < b.x); } SortVector(Float d) { eps = d; } public: static Float eps; }; //--------------------------------- maxon::BaseArray<Vector> points; //... filling the array ... SortVector sort(10); sort.Sort(points);
I want to start the sorting using the tolerance value, but the compiler gives me an unsolved symbol "eps" error because of the static declaration. But I can't omit static, because LessThan wouldn't know "eps". And finally I can't omit static for LessThan().
It happens frequently, that I need additional variable parameters for sorting. How is the provided way to do this?
Thanks of any help.
-
On 14/07/2016 at 17:08, xxxxxxxx wrote:
Did you forget to add the definition of SortVector::eps also in your actual code? Something like this in a
translation unit (.cpp file).Float SortVector::eps = 1.0e-7; // just an example value
-
On 15/07/2016 at 01:45, xxxxxxxx wrote:
You only have the declaration of the static member but you also need to give it a definition (i.e. what Niklas provided) to actually make it exist.
-
On 15/07/2016 at 03:21, xxxxxxxx wrote:
Thanks. Have to read a chapter about static stuff I guess.