אני לא רואה סיבה שלא המתודות בסך הכל לא באמת יושבות פיזית בתוך ה struct. מתודות למעשה ממומשות כפונקציות "רגילות" שמקבלות כפרמטר ראשון את ה this שלהן. גם במקרה הזה יהיו לך מתודות שיקבלו מצביע ל struct המתאים. כמובן שאם מישהו החזיק union דווקא מטיפוס אחר, ובחר לקרוא למתודה בכל זאת, התוכנית יכולה לעוף.