Wywoływanie funkcji z kontenera.
Ostatnio zmodyfikowano 2018-05-08 18:01
Wuwus1 Temat założony przez niniejszego użytkownika |
Wywoływanie funkcji z kontenera. » 2018-05-08 16:38:00 Chciałem stworzyć program, który działa na zasadzie zdarzeń, które są zbierane do kontenera np. std::vector<>, a potem są wywoływane. Napisałem coś takiego. #include <iostream> #include <vector>
void Terminator( void( * Funkcja )() ) { ( * Funkcja )(); }
void First() { std::cout << "First\n"; }
void Second() { std::cout << "Second\n"; }
int main() { std::vector < void *> Cont; Cont.push_back( & First ); Cont.push_back( & Second ); Cont.push_back( & First ); Cont.push_back( & First ); Cont.push_back( & First ); for( int i = 0; i < Lol.size(); i++ ) { Terminator( static_cast < void( * )() >( Cont.at( i ) ) ); } system( "pause" ); return 0; }
Moje pytanie brzmi. Czy istnieje prostszy sposób wywoływania funkcji z kontenera? |
|
jankowalski25 |
» 2018-05-08 17:13:46 Przede wszystkim to się nawet nie kompiluje. A co do upraszczania, to możesz nazwać typ wskaźnika na funkcję za pomocą słowa kluczowego typedef i odtąd używać go tam, gdzie tego potrzebujesz. Jeśli chodzi o unikanie rzutowań, to trzymaj w kontenerze odpowiedni typ, a nie wskaźnik na cokolwiek. |
|
Wuwus1 Temat założony przez niniejszego użytkownika |
» 2018-05-08 18:01:05 Nie kompiluje się bo zamiast Cont.size() jest Lol.size(). Sory mój błąd przy zmianie nazw. I dzięki za porady odnośnie uproszczenia. |
|
« 1 » |