porządku, w moim głównym mam:C++ wywołanie funkcji z wektorem wskaźników funkcji wewnątrz klasy, gdzie definicja funkcji jest w głównej
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
}
aw klasie:
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])();;
}
Jestem w pewnym sensie nowy - to znaczy dla wskaźników, ale czytam ponad moje książki C++, googled, ext. i wydaje się to poprawne, kompiluje się, działa, ale kiedy nazywam "actionWithDiffrentOutcomes()", dostaję naruszenie zasad dostępu. Nie jestem pewien, co robić. wydaje się poprawne, ale coś jest oczywiście błędne. Jak więc wywołać funkcję z klasy, gdy definicja znajduje się w innej?
Robię to w ten sposób, ponieważ nie mogę zakodować każdej opcji w instrukcji switch.
Twój przykładowy kod nie jest kompilowany; czy możesz dokładnie sprawdzić składnię i edytować pytanie? – congusbongus
Ten kod nie zostanie skompilowany. Podaj krótki, samodzielny, poprawny (kompatybilny) przykład (http://sscce.org/). – Johnsyweb