Hej!
Dla Was to pewnie banał, ale ja nie miałem w zwyczaju używać referencji, a teraz potrzebuję.
Mam sobie kod:
double fLin(double x, double *set, double sh=0.0) {
int size = sizeof(set), i;
if (x <= set[0] + sh)
return set[1];
for (i=2; i<size; i++) {
//...
}
return (set[i-1]);
}
int main (...) {
double fs_cR[] = {0,1.0, 0.5,0.0};
double fs_cG[] = {0,0.0, 0.5,1.0, 1,0.0};
double fs_cB[] = {0.5,0.0, 1,1.0};
printf("%lf\n", fLin(0.333, &fs_cR); // linia 70
printf("%lf\n", fLin(0.444, &fs_cG); // linia 71
printf("%lf\n", fLin(0.555, &fs_cB); // linia 72
}
Jest on błędny, bo kompilator wyrzuca:
g.cpp error: cannot convert ‘double ()[4]’ to ‘double’ for argument ‘2’ to ‘double fLin(double, double*, double)’
g.cpp error: cannot convert ‘double ()[6]’ to ‘double’ for argument ‘2’ to ‘double fLin(double, double*, double)’
g.cpp error: cannot convert ‘double ()[4]’ to ‘double’ for argument ‘2’ to ‘double fLin(double, double*, double)’
Jak powinna być zdefiniowana funkcja fLin, by było poprawnie?