我有一個叫做QuadTree的類。我最近創建了它的複製構造函數即:課堂複製操作,它是如何工作的?
QuadTree(const QuadTree &cpy);
說例如我還沒有填寫此構造函數。只要它不被使用,代碼就會編譯得很好。現在,我有一個函數調用subtractTrees:
QuadTree * subtractTrees(QuadTree LHS, QuadTree RHS);
此之前製作拷貝構造函數的代碼工作得很好。現在,使用此功能,我收到以下錯誤編譯程序時:
Undefined Referance to QuadTree::QuadTree(QuadTree const&)
如,因爲我的拷貝構造函數在代碼中使用,還沒有填寫時會出現錯誤。這是否意味着現在我有一個拷貝構造函數調用這樣的被動函數(subtractTrees)會調用拷貝構造函數?
如果是這樣,有辦法阻止這種情況發生,同時仍然使用複製構造函數?我需要這樣做的原因是複製用於這樣的功能將大大減慢我的代碼。但我需要複製構造函數來輕鬆複製樹。
編輯:我只是通過填寫拷貝構造函數固定的錯誤,但問題更多的是
- 它怎麼沒有擺在首位的拷貝構造函數工作。
- 如果有人試圖通過在每次使用樹時不復制樹來節省速度,是否有一種方法可以利用這種不需要複製構造函數?
那麼就是它,如果我必須填寫內容,並與潛在的緩慢承擔後果,怎麼着沒有複製構造函數之前的代碼工作? –
你能通過參考嗎? – joshp
@Ben:通過假設*填充*意味着提供一個定義,您的代碼之前工作,因爲在提供新功能之前,您的代碼不需要複製構造函數在任何地方被調用。 –