嵌套類不會自動合成。如果我嘗試編譯:爲什麼運營商==在C++
class Outer
{
class Inner
{
int t;
};
public:
Inner inner_;
bool operator ==(Outer rightSide);
};
bool Outer::operator ==(Outer rightSide)
{
if (inner_ == rightSide.inner_)
return true;
return false;
}
我得到一個錯誤:
/home/martin/Projects/Experimentation/Various-build-desktop/../Various/main.cpp:18:
error: no match for ‘operator==’ in ‘((Outer*)this)->Outer::inner_ ==
rightSide.Outer::inner_’
請,只是我做錯了什麼或者這是C++
屬性編輯:
哦,我從來沒有意識到的是,操作符==是從來沒有合成過,我確信它是合成的,我沒有麻煩去檢查。
謝謝Parapura Rajkumar!
''==從不自動合成...內部類爲什麼會是任何異常 –
首先,它應該只是'回inner_ == rightSide.inner_',其次是的,它不會爲你合成,因爲它的含義是模棱兩可的。 – Phonon
你爲什麼期望編譯器給你隱式運算符?參看這個問題http://stackoverflow.com/questions/217911/why-dont-c-compilers-define-operator-and-operator – Useless