我有一個包含其他結構以及基本數據類型的結構。我希望能夠通過模板函數訪問每個成員,包括主結構中包含的結構成員。訪問結構成員的模板函數
例如:
struct B {
int y;
int z;
};
struct A {
int x;
B b;
};
template <typename TMember>
bool doSomething(A *a, TMember member) {
a->*member = 5; // some code accessing member
}
// Then access it with:
doSomething(&myA, &A::x);
// and likewise
doSomething(&myA, &A::b.y);
但是第二個將不能編譯,並拋出一個「對象參考失蹤」的錯誤。我認爲它是因爲A沒有成員b.y?
反正是有得到,我想還是會編碼不同的功能需要的功能?
(請注意,這只是一個例子,我有包含較大的結構,一定會來救我的不僅僅是寫第二功能更多的時間碼。)
謝謝!
你肯定第一個編譯?當然,模板演繹會認爲它是一個int,但它仍然試圖訪問一個非靜態成員。 – Aesthete
我認爲你不能做你想做的事。你將不得不編寫另一個函數。不知道你在做什麼或看到你的'結構'我的直覺反應是這樣的設計是不正確的,應該重新考慮。 – pstrjds
「我希望能夠訪問每個成員,包括主結構中包含的結構的成員」。這將違反德米特法。別。 –