0

このクラスで C++ の sigaction を使用すると問題が発生します。

class SerialHandler{
private:
...
             
    /* Action Handling */
    struct sigaction receive_handler;
    /* Called using the receive_handler*/
    static void receive_function(int status);
    /* Get byte from the Serial Port */
    unsigned char receive_byte();
    /* Buffer for Singalinterrupt on Reciving */
    std::vector<char> in_char_buffer;
    ...
};

メンバー変数 (vector in_char_buffer) にアクセスする必要があるため、Interrupt を使用する必要があり、Interrupt/Sigaction でメンバー関数 (receive_function) を使用する必要があります。問題: sigaction.sa_handler に通常の関数を渡す必要があるため、sigaction を使用してメンバー関数を使用できません。

ご覧のとおりstatic、メンバー変数にアクセスできないため、関数を使用することも代替手段ではありません。また、ラッパーは役に立ちません。特定のオブジェクトではなく、新しいオブジェクトにアクセスします。

この問題を処理できる代​​替手段はありますか?

4

1 に答える 1