Dynamiczna tablica wskaźników do funkcji
Ostatnio zmodyfikowano 2016-01-10 16:58
trzodny Temat założony przez niniejszego użytkownika |
Dynamiczna tablica wskaźników do funkcji » 2016-01-10 14:41:42 Witam serdecznie mam problem z przypisaniem funkcji do dynamicznej tablicy.Kod wygląda tak:
[...]
double f1(double x) { return 0.5f * x; } double f2(double x) { return pow(x, 2) - 2; }
typedef double(*WSKF)(double);
WSKF *tablica = new WSKF[2];
tablica[0]=f1;//Tu wywala błąd tablica[1]=f2;
[...]
Czy ktoś z Was pomoże mi doszukać się błędu ?
Dziękuje z góry za wszelką pomoc :) |
|
Monika90 |
» 2016-01-10 15:00:56 Jaki błąd? |
|
trzodny Temat założony przez niniejszego użytkownika |
» 2016-01-10 15:09:05 This declaration has no storage class or type specifier
|
|
carlosmay |
» 2016-01-10 15:16:03 To co zwraca funkcja nie jest obiektem typu klasy do jakiego chcesz go przypisać. Funkcja zwraca wartość i możesz ją przypisać do konkretnej składowej tej klasy. Natomiast przypisanie jak w przykładzie jest możliwe jeśli funkcja zwróci obiekt tej klasy. |
|
mateczek |
» 2016-01-10 15:53:54 taki łamaniec :P #include <iostream> using namespace std;
double f1( double x ) { return 0.5f * x; }
int main() { double( ** wsk )( double ) = new( double( *[ 100 ] )( double ) ); wsk[ 1 ] = f1; cout << wsk[ 1 ]( 5 ) << endl; } |
|
Monika90 |
» 2016-01-10 16:15:50
tablica[ 0 ] = f1; tablica[ 1 ] = f2;
This declaration has no storage class or type specifier |
To znaczy, że ten kod musi być wewnątrz jakiejś funkcji, np. main. Ale możesz też zainicjalizować tablicę od razu przy jej tworzeniu: WSKF * tablica = new WSKF[ 2 ] { f1, f2 };
A najlepiej zrezygnować z tablicy dynamicznej, bo przecież rozmiar twojej tablicy i tak jest stałą: WSKF tablica[ 2 ] = { f1, f2 };
|
|
trzodny Temat założony przez niniejszego użytkownika |
» 2016-01-10 16:58:13 Dzięki wielkie tak miał być w mainie to ,ale z rozpędu napisałem pod. Dzięki jeszcze raz :) |
|
« 1 » |