Хорошо, в моем основном я:
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
}
и в классе:
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])();;
}
Я вроде как новичок в указателях, но я читаю свои книги на С++, googled, ext. и это кажется правильным, компилируется, запускается, но когда я называю "actionWithDiffrentOutcomes()", я получаю нарушение доступа. Я не уверен, что делать. это кажется правильным, но что-то явно неправильно. Итак, как я могу вызвать функцию из класса, когда определение находится в другом?
Я делаю это так, потому что я не могу жестко закодировать каждый параметр в инструкции switch.