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

[C++] Błąd przy przypisywaniu wskaźnika funkcji do struktury

Ostatnio zmodyfikowano 2012-01-12 15:23
Autor Wiadomość
xevuel
Temat założony przez niniejszego użytkownika
[C++] Błąd przy przypisywaniu wskaźnika funkcji do struktury
» 2012-01-11 15:50:19
Mam taką strukturę:
C/C++
struct function
{
    string name;
    template < class A > A func(...);
    int arg_count;
};
i funkcję:
template < class T > bool AddFunction( string name, T func, int arg_count );

Wewnątrz tej funkcji chcę wpisać do wyżej podanej struktury wskaźnik na funkcję
funcs[ apf ].func = func;
gdzie funcs to tablica struktur function. Przy próbie skompilowania tego kodu dostaję błąd

invalid use of member (did you forget the `&' ?)

No i próbowałem kombinować z tymi wskaźnikami i adresami, ale tak czy tak mi się nie kompiluje, najwyżej dostaję inny błąd (też wskazujący na tą linijkę). Co powinienem zmienić, aby działało?
P-47942
pekfos
» 2012-01-11 17:12:26
To nie jest wskaźnik na funkcję. Chyba zostało to omówione w kursie. Jak nie to poszukaj w google..
P-47943
ison
» 2012-01-11 17:13:49
C/C++
template < class A > A func(...);
to nie jest deklarowanie wskaźnika na funkcję szablonową tylko w Twoim przypadku zwykłe zadeklarowanie metody szablonowej, a ciężko pod metodę szablonową coś podpisać
P-47944
xevuel
Temat założony przez niniejszego użytkownika
» 2012-01-12 08:15:12
To jak zadeklarować wskaźnik na funkcję która może mieć raz 3 argumenty, raz 5?
P-47994
pekfos
» 2012-01-12 08:54:26
A jak niby chcesz wywołać taką funkcję?
P-47996
ison
» 2012-01-12 13:27:45
C/C++
void func(...)
{
   
}

int main()
{
    void( * ptr )(...) = & func;
    ptr( 3, 4 );
    ptr( 3 );
    ptr( 3, 4, 5, 6, 23 );
}

tylko w ten sposób nie możesz zdecydować w czasie runtime ile argumentów przekazać
P-48000
xevuel
Temat założony przez niniejszego użytkownika
» 2012-01-12 15:23:41
Tak, tylko że ten sposób nie zadziała przy takiej funkcji:
C/C++
float add( float arg1, float arg2 );

Mi nie chodzi o to, żeby funkcja miała zmienną liczbę argumentów, tylko żeby wskaźnik w strukturze mógł przyjąć funkcję zarówno o 3 argumentach jak i o 5. Po prostu różna funkcja ma różna liczbę argumentów i każda musi się dać do tej struktury przypisać.

Chcę ją wywołać np. tak:
C/C++
( * funcs[ apf ].func )( arg1, arg2 );
( * funcs[ apf + 1 ].func )( arg1, arg2, arg3.arg4, arg5 );
czy jakoś tak; nie wiem czy to zadziała, nie próbowałem jeszcze.

//EDIT:
Sam nie wiem, czy moje pytanie było takie głupie, czy takie trudne... W każdym bądź razie spróbuję zastosować unie.
P-48004
« 1 »
  Strona 1 z 1