私はメインとクラスの2つのファイルを持っています。私は、クラス内の関数(void)を呼び出すと、その関数の中から別のものをメインで呼び出す必要があります。検索の多くの前に私は、コールバックでそうする方法を発見し、コードは次のように終わった:スタティックコールバックの作り方C++
ファイル
#include <functional>
#include <iostream>
class Foo
{
public:
std::function<void()> onCallBackResult;
void start(std::function<void()> callback)
{
onCallBackResult = callback;
second();
}
void second() { //Needs to be static here
onCallBackResult();
}
};
void onCallBackResult()
{
std::cout << "Result\n";
}
int main() {
Foo foo;
foo.start(std::bind(onCallBackResult));
}
そして、それはちょっとうまく動作しますが、問題は、私は本当に必要だということですstart
はWindows APIからWndProcで動作するので静的にすることができますが、私はmain
から関数を呼び出す方法を修正する方法があるかどうかを知りたいので、クラススタティックからonCallBackResult
を作成することはできません。 。
ありがとうございました!
クラスはファイルではありません "がfoo.h" で。ファイルはクラスではありません。 –
'Foo foo = Foo();'これをしないでください。 'Foo foo;'と書いてください –
あなたの例のどの部分がうまくいきませんか? http://coliru.stacked-crooked.com/a/cecfed527cd8c263 – Amadeus