1
我正在使用boost融合庫來識別結構中的所有成員。 Identity
是Namespace::SomeClass
的成員。通過一些遞歸操作,v
最終將成爲Namespace::SomeClass
對象。在輸入if
聲明之後,我希望能夠處理SomeClass
的成員對象。如何在模板東西中處理成員變量
template<typename T>
void Function(T const& v)
{
typedef boost::mpl::range_c<unsigned, 0, boost::fusion::result_of::size<T>::value > T_members;
boost::fusion::for_each(T_members(), FunctionStruct<T>(v));
if (std::is_same<T, Namespace::SomeClass>::value)
{
v.Identity= "0";
}
}
當我編譯這段代碼,它給了我一個C2039錯誤,即
「身份」:是不是「命名空間:: OtherClass」中的一員。
因爲我只是處理成員identity
當v是,Identity
不必是OtherClass
成員。我應該如何編寫我的代碼來避免這種編譯錯誤?
謝謝!不管事實檢查
if (std::is_same<T, Namespace::SomeClass>::value)
是一個編譯時間常數
@XTT不,但這不是一個最小的,完整的或可驗證的例子,所以我不知道。 – Barry
第一種方法奏效!謝謝 – XTT