在msvc中,我有這樣的功能,它構建,但在gcc它不喜歡它。爲什麼msvc讓我這樣做,但不是gcc/g ++?
void classname::a(std::string &text)
{
stdStringFromClass = text;
}
void classname::b(char *text)
{
a(std::string(text));
}
這裏的問題是在&,GCC我覺得擔心,因爲我剛剛創建的std :: string,即通過引用傳遞是有風險的,所以也沒有建立,但MSVC犯規甚至警告我。
爲什麼這個不正確的C++ gcc我聽說msvc比gcc更嚴格。
感謝
錯誤
AguiWidgetBase.cpp: In member function ‘void AguiWidgetBase::setText(char*)’:
AguiWidgetBase.cpp:91:27: error: no matching function for call to ‘AguiWidgetBase::setText(std::string)’
AguiWidgetBase.cpp:80:6: note: candidates are: void AguiWidgetBase::setText(std::string&)
AguiWidgetBase.cpp:88:6: note: void AguiWidgetBase::setText(char*)
會變成這樣好嗎?
void classname::a(std::string &text)
{
stdStringFromClass = text;
}
void classname::b(char *text)
{
std::string k = text;
a(k);
}
需要更多的上下文。什麼是你得到的錯誤,什麼是「stdStringFromClass」等。 – vanza 2010-10-09 20:16:29
stdStringFromClass是一個std :: string – jmasterx 2010-10-09 20:19:40
MSVC不是比gcc更嚴格,這似乎相當倒退給我。錯誤是臨時不能綁定到非const引用。但是,當你顯示很少的代碼時,很難告訴你一個解決方案。你需要修改參數嗎?如果不是,請將其作爲常量參考。有一個'char *'(應該是'const char *')重載以及一個'std :: string'重載是什麼意思? 'std :: string'可以通過'const char *'隱式構造。 – GManNickG 2010-10-09 20:34:28