में पैरामीटर की मेक_श्रेयर संख्या विजुअल स्टूडियो 2010/2011 में वैरिएडिक टेम्पलेट्स (अभी भी!) की अनुपस्थिति में, एक कन्स्ट्रक्टर जो बहुत से पैरामीटर लेता है समस्याग्रस्त हो सकता है। उदाहरण के लिए निम्नलिखित संकलन नहीं:std :: कन्स्ट्रक्टर
MyMaterials.push_back(std::make_shared<Material>(MyFacade,
name,
ambient,
diffuse,
specular,
emissive,
opacity,
shininess,
shininessStrength,
reflectivity,
bumpScaling,
maps,
mapFlags));
है, क्योंकि यह 13 मापदंडों है और मैं make_shared arg9 को arg0 से सीमित है लगता है। स्पष्ट कार्य-आसपास दो भाग निर्माण है, लेकिन मैं इससे बचने की उम्मीद कर रहा था। क्या मेक_श्रेड के बजाय नया के उपयोग के अलावा, यहां कोई अन्य संभावना है?
धन्यवाद।
आह। बेशक। यह सही समझ में आता है। – Robinson
अच्छी बात यह है कि make_shared share_plr –
बनाते समय अनुकूलित एक-आवंटन दिनचर्या का भी उपयोग करेगा क्षमा करें - मुझे नहीं लगता कि यह कैसे स्थानीय ढेर (जहां सामग्री() का निर्माण किया जा रहा है) से चिपकने से बचाता है (जहां वास्तव में make_shared होगा इसे लगादो)। इस मामले में, प्रतिलिपि को संभवतः कैसे बचाया जा सकता है? – Mordachai