このクラスで 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
、メンバー変数にアクセスできないため、関数を使用することも代替手段ではありません。また、ラッパーは役に立ちません。特定のオブジェクトではなく、新しいオブジェクトにアクセスします。
この問題を処理できる代替手段はありますか?