さて、私のメインで私は持っています:
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])();;
}
私はポインターに少し慣れていませんが、c ++の本、googled、extを読みました。これは正しいように見え、コンパイル、実行されますが、「actionWithDiffrentOutcomes()」を呼び出すと、アクセス違反が発生します。どうしたらいいかわかりません。正しいように見えますが、明らかに何かが間違っています。では、定義が別のクラスにある場合、クラス内から関数を呼び出すにはどうすればよいですか?
すべてのオプションをswitchステートメントにハードコーディングできないため、このようにしています。