[英]Converting C++ linked stack into smart pointers
我有一個關於將以下代碼轉換為智能指針的問題,特別是在共享指針方面。 Node.cpp 是類模板Node<T>
的實現文件,其構造函數定義如下。
節點.cpp
...
template <typename T>
Node<T>::Node(const T& anItem, std::shared_ptr<Node<T>> nextNodePtr)
: item(anItem), next(nextNodePtr) { }
...
鏈接堆棧文件
...
template <typename T>
bool LinkedStack<T>::push(const T& newItem) {
topPtr = new Node<T>(newItem, topPtr);
return true;
}
...
LinkedStack.cpp(在共享指針方面,我的嘗試)
...
template <typename T>
bool LinkedStack<T>::push(const T& newItem) {
std::shared_ptr<Node<T>> topPtr
= std::make_shared<Node<T>>(Node<T>(newItem, topPtr));
return true;
}
...
這是將 LinkedStack.cpp 轉換為使用共享指針的形式的正確方法嗎?
std::shared_ptr<Node<T>> topPtr
宣布新的品牌,本地變量,並躲到topPtr
,我認為是一個LinkedStack
成員變量。 結果是幾乎立即破壞了本地topPtr
。 並且沒有在LinkedStack::topPtr
放置任何東西
您需要做一些更像轉換前版本的事情:
topPtr = std::make_shared<Node<T>>(Node<T>(newItem, topPtr));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.