اگر متغییر را در ابتدای فایل usb.cpp تعریف کنید متغیر شما دیگه یک متغییر عضو نخواهد بود و global خواهد شد. به همین علت می تونید از همه توابع بهش دسترسی داشته باشید.
ولی کد شما که مشکلی نداره نوع unsigned char که تعریف شده متغییر عضو کلاس هست پس بنابراین بدون مشکل برای اعضای کلاس کار خواهد کرد.
البته دوتا نکته وجود داره یکی اینکه فرار تعریف شدن این متغییر در ناحیه های بحرانی برای شما کاربردی داره؟
دوم اینکه تابع مذکور را دارید داخل یک shared library / dynamic library استفاده میکنید؟ و چون که یک آبجکت استاتیک از کلاس تعریف کرده اید پس بنابراین در تمام لایبرری خودتون به یک شی واحد دسترسی خواهید داشت و این حوزه دسترسی در لایبرری خواهد بود پس بنابراین در خارج از این لایبرری دسترسی به این متغییر نخواهید داشت در صورت نیاز باید امکانی را فراهم کنید که در خارج از حوزه لایبرری هم به آن دسترسی داشته باشید با تعریف یک متد دسترسی در لایبرری هم به رفرنس و هم به اشاره گری ثابت وهم به مقدار متغییر می تونید دسترسی داشته باشید.
بنابراین همانطور که قبلا هم گفتم دسترسی و تغییر مقدار متغییر عضو در سطح لایبرری نمی تونه مشکلی داشته باشه!
به هرحال برای راهنمایی بهتر باید کدتون را کاملتر قرار بدید.
در آخر هم پیشنهاد میکنم بجای استفاده از نوع volatile از کلاسهای std::atomic و std::memory_order استفاده کنید تا بتونید از قفل های تعریف شده در این کلاسها در جهت همگام سازی داده ها در نخ های مختلف استفاده کرده باشید