2
我對C++中的模板有理論上的疑問。
比方說,我有以下代碼: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 ::Ç:: VAL場,當我可以訪問乙:: k?
B :: c :: val也是B的成員。或不?
int val = 15;這錯誤裏面的structre ...使用構造函數有初始值。 – Nik
有沒有這樣的事情'B :: c :: val'。你只能在'::'的左邊有一個類或命名空間的名字。 'B :: c'既不是。這與模板無關。 –
這會工作「a.test(be.c)」 –
Nik