Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dynamiczna tablica wskaźników do funkcji

Ostatnio zmodyfikowano 2016-01-10 16:58
Autor Wiadomość
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 :)
P-143277
Monika90
» 2016-01-10 15:00:56
Jaki błąd?
P-143280
trzodny
Temat założony przez niniejszego użytkownika
» 2016-01-10 15:09:05
This declaration has no storage class or type specifier
P-143282
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.
P-143284
mateczek
» 2016-01-10 15:53:54
taki łamaniec :P
C/C++
#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;
   
}
P-143292
Monika90
» 2016-01-10 16:15:50

C/C++
tablica[ 0 ] = f1; //Tu wywala błąd
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:
C/C++
WSKF * tablica = new WSKF[ 2 ] { f1, f2 };

A najlepiej zrezygnować z tablicy dynamicznej, bo przecież rozmiar twojej tablicy i tak jest stałą:
C/C++
WSKF tablica[ 2 ] = { f1, f2 };
P-143298
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 :)
P-143301
« 1 »
  Strona 1 z 1