ฉันมีโครงสร้างที่มีสมาชิกสองคนตัวอย่างเช่น:
struct DataSet {
int x;
int y;
};
... และฉันต้องเข้าถึงวิธีดังกล่าว แต่จะทำได้ทีละหนึ่งเท่านั้น:
void foo(StructMember dsm) { // ("StructMember" does not exist)
DataSet ds;
ds.x = 4;
ds.y = 6;
std::cout << ds.dsm * ds.dsm << std::endl;
}
foo(x);
foo(y);
ผลลัพธ์ที่ฉันต้องการ:
16
36
ฉันควรทำอย่างไรเมื่อฉันต้องแก้ปัญหาเช่นนี้ มีประเภทข้อมูลที่สามารถเข้าถึงสมาชิกได้หรือไม่?
@ ocket8888
—
ซุปเปอร์
c++มีตัวชี้ไปยังสมาชิกดังนั้นไม่จำเป็นต้องแฮ็กตัวชี้ที่กำหนดเองเพื่อทำงานนี้
@eerorika คุณพูดถูก ก่อนหน้านี้ฉันมีสองสายในฐานะสมาชิก แต่ฉันเปลี่ยนเป็น int ฉันลืมลบ "std ::"
—
เอเดรียน
dsm = 0ในการเข้าถึงxและdsm = 4การเข้าถึงแล้วคุณต้องการเข้าถึงพวกเขาเช่นyint val = int(*(&ds+dsm))