I have a lot of functions with such signatures:
//libraries I can't change
void f1(double *x);
void f2(double *x1, double *x2);
...
And a lot of code that uses them:
//my code
double x; ... f1(&x);
double x1[] = ...; double x2 = ...; f2(x1, &x2);
...
For some reasons I decided to use in My code special class instead of ordinary doubles:
struct DoubleClass {
double x_;
...
//constructors, overloaded arithmetic operators and casts to double
};
This DoubleClass behaves like double with some additional functionality that I want. In memory DoubleClass is the same as double. It has only 1 member and sizeof(DoubleClass) == sizeof(double). And so I want to redeclare all doubles in my code with something like
#define double DoubleClass
But I can't compile code because there is no conversion from DoubleClass* to double*. I can't change functions f1, f2. So I wanted to ask if I can somehow define an implicit conversion from DoubleClass* to double* or maybe there are some tricks that will allow to do it.
Aucun commentaire:
Enregistrer un commentaire