[Error] cannot convert 'double' to 'double (*)(double, double)' for argument '3' to 'double calculate(double, double, double (*)(double, double))'
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

[Error] cannot convert 'double' to 'double (*)(double, double)' for argument '3' to 'double calculate(double, double, double (*)(double, double))'

AutorWiadomość
Temat założony przez niniejszego użytkownika
[Error] cannot convert 'double' to 'double (*)(double, double)' for argument '3' to 'double calculate(double, double, double (*)(double, double))'
» 2014-06-02 21:03:09
witam, chciałbym żeby w pętli for funkcja calculate wywoływała funkcje (dodawanie, odejmowanie...) z tablicy funkcji dzialania, chcąc to uzyskać w wywołaniu funkcji calculate
korzystam z adresu pierwszego elementu. Chciałbym żeby program działał w ten sposób ale niestety nie mogę sobie poradzić z tym errorem, więc proszę o pomoc :)
C/C++
#include<iostream>
double dodawanie( double x, double y );
double odejmowanie( double x, double y );
double dzielenie( double x, double y );
double mnozenie( double x, double y );
double calculate( double x, double y, double( * wsk_na_funkcje )( double, double ) );

int main()
{
    using namespace std;
    double liczba1, liczba2, wynik;
    double( * dzialania[ 4 ] )( double, double ) = { dodawanie, odejmowanie, dzielenie, mnozenie };
    double( ** wsk )( double, double ) = dzialania; // wskaznik do adresu pierwszego elementu tablicy wskaznikow funkcji dzialania
   
    do
    {
        cout << "Podaj pare liczb. Jesli chcesz zakonczyc wcisnij x.\n";
        cin >> liczba1 >> liczba2;
       
        for( int i = 0; i < 4; i++ )
        {
            wynik = calculate( liczba1, liczba2, wsk[ i ]( liczba1, liczba2 ) ); //ERROR
            cout << wynik << endl;
           
        }
       
    } while( cin );
   
    return 0;
   
}

double dodawanie( double x, double y )
{
    return x + y;
}

double odejmowanie( double x, double y )
{
    return x - y;
}

double dzielenie( double x, double y )
{
    return x / y;
}

double mnozenie( double x, double y )
{
    return x * y;
}

double calculate( double x, double y, double( * wsk_na_funkcje )( double, double ) )
{
    return( * wsk_na_funkcje )( x, y );
}
[/i]
P-111324
» 2014-06-02 21:29:54
po prostu tak
C/C++
calculate( liczba1, liczba2, wsk[ i ] );
albo lepiej
C/C++
calculate( liczba1, liczba2, dzialania[ i ] );
bo wsk nie jest potrzebne
P-111327
Temat założony przez niniejszego użytkownika
» 2014-06-02 21:34:30
wtedy pokazuje się ten sam error, ale kiedy zamiast dzialania(liczba1, liczba2), odnoszę się do konkretnych adresów np. dodawanie, to wtedy program działa
P-111328
» 2014-06-02 21:41:57
Może kompilujesz inny plik niż myślisz. Tu działa
http:/​/coliru.stacked-crooked.com/a​/46ca06fb340619fe
P-111329
Temat założony przez niniejszego użytkownika
» 2014-06-02 21:47:24
faktycznie :D działa! bardzo dziękuję za pomoc.
P-111330
« 1 »
 Strona 1 z 1