我对 C++ 中的模板有理论问题。
假设我有以下代码:
struct C{
int val = 15;
};
struct B{
C c;
int k = 9;
};
struct A{
template<typename T, typename FType, FType T::* Field = nullptr>
void test(T& d){
if (Field != nullptr){
int a = d.*Field;
}
}
};
int main(int argc, char *argv[])
{
A a;
B be;
a.test<B, int, &B::c::val>(be);
//a.test<B, int, &B::k>(be);
}
问题是:当我可以访问B::k时,为什么我不能访问B::c::val字段?B::c::val也是B的成员。或不?