-1

初期化時に関数をパラメーターとして受け入れるクラスを作成しようとしています。理想的には、関数は既に存在している必要があります。私はPythonでこれを行うことができることを知っています:

class TestClass:
    def __init__(self, function_parameter):
        self.fp = function_parameter
    def executeFP(self):
        self.fp()

def testFunction():
    print("test")

q = TestClass(testFunction)

q.executeFP()

C++でこれを行うにはどうすればよいですか? (問題がある場合はArduinoを使用しています)

4

2 に答える 2

0

次のようなことができます:(Arduinoが次のようにできるかどうかはわかりません

template <typename F>
class TestClass {
    public:
    TestClass( F func )
        :m_func(func)
    {

    }

    void executeFP()
    {
        m_func();
    }

    private:
    F *m_func;

};

void doStuff()
{

    std::cout << "test" << std::endl;
}

bool doAnotherStuff( )
{
    std::cout <<"test " << 40 +2 << std::endl;

    return true;

}

int main()
{
    TestClass<decltype(doStuff)> someObj ( doStuff );

    TestClass<decltype(doAnotherStuff)> someObj2 ( doAnotherStuff );

    someObj.executeFP();

    someObj2.executeFP();

}

こちらをご覧ください

于 2019-08-19T03:58:59.500 に答える