मेरा प्रश्न इस बात के बारे में है कि नाम का उपयोग किया जाना चाहिए।परिवर्तनीय NAMES टेम्पलेट कैसे करें, प्रकार नहीं?
हो सकता है कि एक सरल & छद्म उदाहरण:
/**
Does something with a specified member of every element in a List.
*/
template<membername MEMBER> // <-- How to define such thing?
void doSomething(std::vector<MyClass> all){
for(i=0; i < all.size(); i++)
all[i].MEMBER++; // e.g.; use all[i].MEMBER in same way
}
और
class MyClass{
public:
int aaa, bbb, ccc;
}
और आवेदन:
main(){
vector<MyClass> all = ....
// applicate doSomething() to all aaa's
doSomething<aaa>(all); // or:
doSomething<MyClass::aaa>(all); // or:
doSomething<?????>(all);
}
कैसे करना चाहिए टेम्पलेट परिभाषा की तरह दिखता है मैं जो स्विच कर सकते हैं कि MyClass के सदस्य चर (aaa, bbb या ccc) को एक्सेस/संशोधित किया गया है कुछ कुछ(।) ?
मेरे वास्तविक विश्व कार्य में सभी सदस्य उपरोक्त के समान प्रकार के होते हैं।
धन्यवाद, Tebas
धन्यवाद। मूल्य द्वारा 'सभी' कॉल करें प्रश्न के सरलीकरण के लिए था ... लेकिन सदस्य सूचक टेम्पलेट्स द्वारा अनुरोधित संदर्भ द्वारा कॉल किया गया है? या मैं एक प्रति का उपयोग भी कर सकता हूँ? – Tebas
@Tebas: आप एक प्रति का उपयोग कर सकते हैं, लेकिन इसका मतलब है कि 'doSomething' का प्रभाव फ़ंक्शन के बाहर दिखाई नहीं देगा। संदर्भ के अनुसार कॉल का उपयोग यह सुनिश्चित करने के लिए किया गया था कि परिणाम कॉलर के वेक्टर में दिखाई देगा। –
@Tebas: नहीं, इससे कोई फर्क नहीं पड़ता। किसी भी मामले में सभी [i] MyClass टाइप की एक लवली अभिव्यक्ति होगी। – sellibitze