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

czy mozliwe jest wywolanie funkcji ktorej nazawa jest zmienna

Ostatnio zmodyfikowano 2011-10-03 23:18
Autor Wiadomość
jerzy
Temat założony przez niniejszego użytkownika
czy mozliwe jest wywolanie funkcji ktorej nazawa jest zmienna
» 2011-10-03 18:39:01

mam 5 zdefiniowanych funkcji

f1(),f2(),f3(),f4(),f5()

 mam petle for i = 1; i < 5; i++

{
  nazwa_funkcji = "f" poloczone z  i  ( daje f1, f2.. itd)
  nazwafunkcji();
}

czy da sie cos takiego zrobic?



P-41650
pekfos
» 2011-10-03 18:52:02
nie.
P-41654
jerzy
Temat założony przez niniejszego użytkownika
» 2011-10-03 19:07:18
Czy nie ma na to sposobu?

tym bardziej ze tych funkcji jest teraz 5 a potem bedzie duzo wiecej.

moze jednak da sie cos zrobic??



P-41658
SeaMonster131
» 2011-10-03 19:12:32
C/C++
void funkcja( int liczba )
{
    //....
}

for( int i = 0; i < 5; i++ )
     funkcja( i );
P-41659
akwes
» 2011-10-03 19:39:16
@pekfos, dlaczego nie? Sposób jest i to bardzo prosty. Kwestia tego że nazywanie funkcji f1,f2,f3, ax435_v2 itd to czysta głupota :P

P-41662
pekfos
» 2011-10-03 19:45:38
to jaki masz "bardzo prosty sposób" na "wywołanie funkcji której nazwa jest zmienna"??
P-41665
akwes
» 2011-10-03 19:47:23
C/C++
#include <iostream>
#include <conio.h>
#define f(x) f##x()
/*
od tej pory zapis f( liczba ) wywoła fliczba()
*/
using namespace std;

int f1()
{
    cout << "PIERWSZA\n";
}

int f2()
{
    cout << "DRUGA\n";
}

int f3()
{
    cout << "TRZECIAA\n";
}

int main()
{
    f( 1 );
    f( 2 );
   
    getch();
    return 0;
}
 Tak na szybko, na pewno da się zrobić lepiej ale nie znam aż tak dobrze dyrektyw.
P-41666
pekfos
» 2011-10-03 19:49:23
jakby tak się dało tego użyć jak autor tematu chce to bym to tym napisał.
C/C++
for( int a = 0; a < 5; ++a ) {
    f( a ) // ojej, fa()?
}

chyba że tak:
C/C++
#include <iostream>
using std::cout;

#define DECL(a) void f##a() { cout<<a<<" "; }
#define REG(a) fun[a-1] = f##a;

void( * fun[ 5 ] )();

DECL( 1 );
DECL( 2 );
DECL( 3 );
DECL( 4 );
DECL( 5 );

int main() {
    REG( 1 );
    REG( 2 );
    REG( 3 );
    REG( 4 );
    REG( 5 );
   
    for( int a = 0; a < 5; ++a ) {
        fun[ a ]();
    }
   
}
ale i tak trzeba gdzieś wyliczyć wszystkie te funkcje więc nie ma tak dobrze :P
P-41667
« 1 » 2
  Strona 1 z 2 Następna strona