मैं निम्नलिखित टेम्पलेट वर्ग एक विधि के साथ (नीचे छीन केवल प्रासंगिक भागों को रोकने के लिए) Push
में लिखा सी ++ 11 कहा जाता है:std :: चाल या एसटीडी पैरामीटर एसटीडी के साथ आगे :: :: unique_ptr <T> &&
template<class T, int Capacity>
class CircularStack
{
private:
std::array<std::unique_ptr<T>, Capacity> _stack;
public:
void Push(std::unique_ptr<T>&& value)
{
//some code omitted that updates an _index member variable
_stack[_index] = std::move(value);
}
}
मेरा प्रश्न है:
मैं
std::move
याstd::forward
Push
भीतर का उपयोग कर किया जाना चाहिए?
मुझे यकीन है कि है कि क्या std::unique_ptr<T>&&
एक सार्वभौमिक संदर्भ के रूप में उत्तीर्ण और इसलिए move
बजाय forward
का उपयोग करना चाहिए नहीं कर रहा हूँ।
मैं सी ++ के लिए बिल्कुल नया हूं।
यदि आप किसी मैंगेड भाषा से आ रहे हैं, तो "संदर्भ के लिए" दृष्टिकोण की नकल न करने का प्रयास करें। सी ++ में, ऑब्जेक्ट की सरणी ज्यादातर मामलों में ऑब्जेक्ट की सरणी होनी चाहिए, न कि संदर्भों की एक सरणी जो गतिशील रूप से 'new' के साथ आबादी में आती है। यह याद रखना। –
डुप्लिकेट: http://stackoverflow.com/q/9671749, http://stackoverflow.com/q/7257144। –
टिप के लिए धन्यवाद, 'std :: unique_ptr' ठीक है 'पुश' को 'टी' के उत्तराधिकारी के उदाहरण दिए जाएंगे? –
keith