就在我以爲我有指針的時候,看起來好像還是有點困惑。我正在寫運算符=重載,所以我想取消分配內存然後分配新的。我正在處理一個四叉樹類,其中每棵樹都有一個指向根節點的指針,而一個根節點有4個指向4個孩子的指針,而每個樹有4個孩子。所以operator =應該只是複製另一個樹的根並返回它。所以在釋放之後,我想要分配新的內存和分配。所以,我做的:帶指針的函數
root=new QtreeNode;
root=nodeCopier(*(source.root));
這是我的nodeCopier簽名:
QNode nodeCopier(const QtreeNode & n) {
QtreeNode tempNode;
//stuff
return tempNode;
}
但後來我得到這個錯誤錯誤:
no matching function for call to
Qtree::nodeCopier(Qtree::QtreeNode* const&)
qtree.h:92: note: candidates are: Qtree::QtreeNode Quadtree::nodeCopier(const Qtree::QtreeNode&)
我該如何解決這個問題?
你可以發佈你的'QtreeNode'類的聲明嗎? – 2011-04-01 17:28:46