我有一個在Linux上運行的C++代碼,但是我在Windows上得到了一個Visual C++中的錯誤。代碼如下:Visual C++因爲comperator而拋出映射異常
struct dependence {
dependence() {}
dependence(string CUid, LID sink, LID source, std::string var)
: CUid(CUid), sink(sink), source(source), var(var) {}
string CUid;
LID sink = 0;
LID source = 0;
std::string var;
};
struct dependenceCompare {
bool operator() (const dependence& lhs, const dependence& rhs) const{
return ((lhs.CUid<rhs.CUid) || (lhs.source<rhs.source) || (lhs.sink < rhs.sink) || (lhs.var < rhs.var));
}
};
在Windows上運行的代碼,我得到以下錯誤:
Debug Assertion Failed!" c:\windows\system32\MSCP120D.dll c:\Program Files\Microsoft Visual Studio 12.0\VC\include\xtree line 1795 Expression: invalid operator< When I change the comparator to just one if clause, it works:
struct dependenceCompare {
bool operator() (const dependence& lhs, const dependence& rhs) const{
return ((lhs.CUid < rhs.CUid));
}
};
我已閱讀本線,但無法找出問題的所在以及爲什麼它在Linux中使用cmake而不是在Visual Studio C++中。
請嘗試創建一個[最小,完整,可驗證的示例](HTTP: //stackoverflow.com/help/mcve)*非工作*代碼。包括你如何使用你向我們展示的結構。 –
如果在所述調試斷言上按_ignore_會怎麼樣?調試斷言,不是,_technically_,錯誤,並且僅在調試版本中才可見。 –
這是一個調試斷言,不是一個例外。它附帶有趣的說明。你需要養成實際閱讀錯誤/警告對話的習慣。 – IInspectable