Va bene, a mio principale che ho:C++ chiamando una funzione da un vettore di puntatori a funzione all'interno di una classe in cui la definizione di funzione è in main
void somefunction();
int main()
{
//bla bla bla
SomeClass myclass = SomeClass();
void(*pointerfunc)() = somefunction;
myclass.addThingy(pointerfunc);
//then later i do
myclass.actionWithDiffrentOutcomes();
}
void somefunction()
{
//some code
}
e nella classe:
class SomeClass()
{
public:
void addThingy(void (*function)());
void actionWithDiffrentOutcomes();
private:
std::vector<void (**)()> vectoroffunctions;
}
SomeClass::addThingy(void (*function)())
{
vectoroffunctions.push_back(&function);
}
SomeClass::actionWithDiffrentOutcomes()
{
(*vectoroffunctions[0])();;
}
Sono una sorta di new-ish per i puntatori, ma ho letto i miei libri C++, googled, ext. e questo sembra corretto, compila, ma quando chiamo "actionWithDiffrentOutcomes()" ottengo una violazione di accesso. Non sono sicuro di cosa fare. sembra corretto, ma qualcosa è ovviamente sbagliato. Quindi, come posso chiamare una funzione all'interno di una classe quando la definizione è in un'altra?
Lo sto facendo in questo modo perché non riesco a codificare tutte le opzioni in un'istruzione switch.
Il codice di esempio non viene compilato; potresti per favore ricontrollare la sintassi e modificare la tua domanda? – congusbongus
Questo codice non verrà compilato. Fornire un [Breve, autonomo, corretto (compilabile), esempio] (http://sscce.org/). – Johnsyweb