Saya memiliki struct dengan dua anggota, misalnya:
struct DataSet {
int x;
int y;
};
..., dan saya harus mengaksesnya dalam suatu metode, tetapi hanya satu per satu, misalnya:
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);
Output yang saya ingin miliki:
16
36
Apa yang harus saya lakukan ketika saya harus menyelesaikan masalah seperti ini? Apakah ada tipe data yang dapat mengakses anggota?
dsm = 0
dapat mengaksesx
dandsm = 4
mengaksesy
, lalu Anda akan mengaksesnya sepertiint val = int(*(&ds+dsm))
.c++
memiliki pointer-to-anggota, jadi tidak perlu hacks pointer kustom untuk membuat ini berfungsi.Jawaban:
Ya, Anda bisa menggunakan pointer-to-member. Sintaks untuk tipe ini
TypeOfMember TypeOfStruct::*
, dan untuk mengakses Anda lakukanstruct_variable.*pointer_variable
sumber