5
//#define NOT_WORKS
#define HOW(X) 0
struct A {
};
struct B {
A a;
};
struct C {
B b;
};
int main(int argc, char **argv) {
A B::*ba = &B::a; // ba is a pointer to B::a member
B C::*cb = &C::b; // cb is a pointer to C::b member
#ifdef NOT_WORKS
{ A C::*ca = &C::b::a; } // error: Symbol a could not be resolved/error: ‘C::b’ is not a class or namespace
{ A C::*ca = cb + ba; } // error: invalid operands of types ‘B C::*’ and ‘A B::*’ to binary ‘operator+’
A C::*ca = HOW(???); // is possible to reach C::b::a by a member pointer?
#endif
C cptr;
A aptr = cptr.*cb.*ba; // is pointer inference chaining the only solution?
return 0;
}
Üye işaretçilerin çıkar çatışması, iç üyeye ulaşmak için tek çözüm ise, bunları şablonlar kullanarak tek bir tipte kapsülleyebilir miyim? C++ Öğenin üyesi için işaretçi
Şimdi kod
herkes
Bu kod çok garip ve bunu derlemek kuramıyorum. Tam olarak ne demek A B :: * ba = &B::a; Bunun doğru olduğuna emin misiniz? Şu kodu görüyorum: A a; B b; b.a = a; Ve aynı şey işaretçilerle, ancak hiçbir zaman "::" –
@AdrianMaire ile: "AB :: * ba = &B::a;", "A" türünün B türüne bir işaretçi olduğunu bildirir ve başlatır '& B :: a' ile. Derleyici iyi olmalı. –
@Charles Bailey: Teşekkürler, bundan daha çok şey öğreneceğim. –