czy mozliwe jest wywolanie funkcji ktorej nazawa jest zmienna
Ostatnio zmodyfikowano 2011-10-03 23:18
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?
|
|
pekfos |
» 2011-10-03 18:52:02 nie. |
|
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??
|
|
SeaMonster131 |
» 2011-10-03 19:12:32 void funkcja( int liczba ) { }
for( int i = 0; i < 5; i++ ) funkcja( i ); |
|
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
|
|
pekfos |
» 2011-10-03 19:45:38 to jaki masz "bardzo prosty sposób" na "wywołanie funkcji której nazwa jest zmienna"?? |
|
akwes |
» 2011-10-03 19:47:23 #include <iostream> #include <conio.h> #define f(x) f##x()
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. |
|
pekfos |
» 2011-10-03 19:49:23 jakby tak się dało tego użyć jak autor tematu chce to bym to tym napisał. for( int a = 0; a < 5; ++a ) { f( a ) } chyba że tak: #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 |
|
« 1 » 2 |