簡體   English   中英

重載構造函數的調用不明確

[英]Call of overloaded constructor is ambiguous

我正在嘗試實現一個面向對象的二叉樹,但是,我得到了一個重載構造函數調用不明確的錯誤消息。 問題是我確實有必要的構造函數,但C ++似乎無法識別它。

我的代碼: http//pastebin.com/PM9PDYAN

錯誤信息:

56  36  In constructor 'Node::Node(const int&, Node*, Node*, const int&)':
56  36  [Error] call of overloaded 'Node(const int&, Node* const)' is ambiguous
17  3   [Note] Node::Node(const int&, Node*)
15  3   [Note] Node::Node(const int&, const int&, Node*) <near match>
15  3   [Note] no known conversion for argument 2 from 'Node* const' to 'const int&'
37  1   [Note] Node::Node(const int&, Node*, Node*, Node*)

具有默認參數“ overlap”的兩個構造函數:

Node(const int&, Node* = nullptr, Node* = nullptr, Node* = nullptr);

和:

Node(const int&, Node* = nullptr);

這兩個都可以使一個int或一個intNode *的調用匹配。

看起來還有其他重疊的構造函數。

Node(const int&, Node* = nullptr, Node* = nullptr, Node* = nullptr);
Node(const int&);
Node(const int&, Node* = nullptr);

這三個是模棱兩可的調用,因為如果通過以下方式調用,編譯器將無法解析該調用:

Node node(1);

以下構造函數是不明確的(以及其他)。 如果用戶說Node node(5) ,則編譯器不知道您的意思是Node(const int& 5, Node* = nullptr); Node(const int& 5)

Node(const int&, Node* = nullptr);
Node(const int&);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM