ownership-semantics

    0熱度

    3回答

    根據我最近在面試時的建議,我被建議研究C++ 11的unique_ptr功能,作爲自動垃圾收集的一種手段。因此,我使用了一個較老的項目,並用unique_ptrs替換了我的原始指針,這些指針用'new'關鍵字創建。不過,我想我已經到了一個所有權問題。 在我的mainclass.cpp(發佈如下)請注意init函數和3個unique_ptrs到我創建的新實例化對象。命名爲「bg」,「bg2」和「th

    5熱度

    1回答

    向負責刪除QAction *對象的QMenu添加QAction *時?我無法在QMenu或QAction的文檔中找到它。 void MyClass::contextMenuEvent(QContextMenuEvent *evt) { QMenu menu(this); QAction *a = new QAction(tr("Some action"), this);

    8熱度

    1回答

    Rust的示例網站上提供了Rust的移動語義示例:Rust Move Semantics。 我對這兩種情況都有基本的瞭解。首先是一個原語如何可以有一個新的別名,原始仍然可以使用,因爲最終的結果是一個複製看到i32利用Copy特質。這對我來說很有意義。 此外,出於許多充分的理由,第二個示例在堆中具有多個引用i32的別名方面是有意義的。 Rust實施所有權規則,因此在創建新綁定後,原始別名不能使用。這

    2熱度

    1回答

    當計數爲1時,是否有辦法將對象從Rc<T>中移出?我在想一個如何實施: fn take_ownership<T>(shared: Rc<T>) -> Result<T, Rc<T>> { ... } 語義將是你T如果計數爲1,你回來shared否則這樣你就可以稍後再試。

    8熱度

    1回答

    爲了方便調用者,我想寫一個接受任何類型字符串(&str/String)的泛型函數。 該函數內部需要String,所以如果調用者使用String調用該函數,我還想避免不必要的重新分配。 foo("borrowed"); foo(format!("owned")); 接受有關的其他方式,我知道我可以使用foo<S: AsRef<str>>(s: S)引用,但什麼? 我認爲基於ToOwned可能工

    0熱度

    1回答

    我正試圖在Rust中實現一個簡單的REPL計算器,並且我正在遍佈各處的磚牆。 我在使用硬編碼字符串迭代時消耗字符。當我打一個數字字符時,我想將控制權交給一個函數,該函數將使用該數字的其餘部分(假設該數字具有多個數字)並返回該數字,並將其轉換爲整數。 我在將Chars迭代器傳遞給函數時遇到了問題。我得到的錯誤是use of moved value: 'iter'。 我知道我不能改變我給別人的東西 -

    8熱度

    3回答

    我有一些不可複製的類型和消耗以及(也許)產生它的功能: type Foo = Vec<u8>; fn quux(_: Foo) -> Option<Foo> { Some(Vec::new()) } 現在考慮一個類型,是某種概念上非常相似,Box: struct NotBox<T> { contents: T } 我們可以編寫一個功能,臨時移出NotBox的內容

    3熱度

    1回答

    我有一個實施的下列草圖: trait Listener { fn some_action(&mut self); fn commit(self); } struct FooListener {} impl Listener for FooListener { fn some_action(&mut self) { println!("{:?}",

    1熱度

    1回答

    的熬濃的問題如下所示: use std::marker::PhantomData; struct WorldState<'a> { state: &'a f64, } trait CalculateWorldState<T> { fn state_value(&mut self, input: &T) -> f64; } trait LearningAlgor

    0熱度

    1回答

    我剛開始學習Rust並通過Rust書進行工作。其中一章通過幾個例子,並以「嘗試進行這種通用」類型的建議練習結束。我一直對此感到震驚。你開始的半通用型是這樣的:「值」 struct Cacher<T> where T: Fn(i32) -> i32 { value: Option<i32>, // leaving out rest for brevity 然後我去