Tôi đã lớp mẫu sau (rút gọn để chỉ chứa các bộ phận liên quan) với một phương pháp gọi là Push
viết bằng C++ 11:std :: di chuyển hoặc std :: về phía trước với tham số 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);
}
}
câu hỏi của tôi là:
tôi có nên được sử dụng
std::move
hoặcstd::forward
trongPush
?
Tôi không chắc chắn liệu std::unique_ptr<T>&&
đủ điều kiện để tham khảo phổ quát và do đó nên sử dụng forward
hơn move
.
Tôi mới hợp lý với C++.
Nếu bạn đang đến từ một ngôn ngữ mang tính, hãy thử không bắt chước cách tiếp cận "tham chiếu đến". Trong C++, mảng đối tượng nên trong hầu hết các trường hợp một mảng đối tượng, không phải là một mảng các tham chiếu được điền động với 'mới'. ghi nhớ nó trong tâm trí. –
Bản sao: http://stackoverflow.com/q/9671749, http://stackoverflow.com/q/7257144. –
Cảm ơn bạn đã tip, sẽ 'std :: unique_ptr' được OK cho 'Push' sẽ được đưa ra trường hợp của các loại thừa kế' T'? –
keith