[英]Copy&Swap idiom warning : recursive on all control paths, function will cause runtime stack overflow
[英]“recursive on all control paths, function will cause runtime stack overflow” on overloaded << operator
我有一段代碼在編譯時似乎有遞歸警告,為什么有什么主意?
ostream& operator << (ostream& out, const node& rhs)
{
out << rhs.get_data();
return out;
}
它正在調用此函數:
node::value_type node::get_data() const
{
return data;
}
這只是一個猜測,因為您尚未發布獨立的示例。 特別地, node
的定義將非常有用。
我認為,出於某種原因,編譯器可能選擇使用隱式轉換構造函數將rhs.get_data()
轉換為node
,而不是選擇operator<<
需要node::value_type
的重載。 你應該:
operator<<
之前聲明了operator << (ostream&, node::value_type)
。 node
有一個采用value_type
的構造函數,那么最好使其explicit
以避免意外的隱式轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.