我有一類就是像const是殺死我的C++程序的疾病。這次發生了什麼?
class HtmlRover
{
public:
HtmlRover(const std::string::const_iterator &, const std::string::const_iterator &);
~HtmlRover();
// ...
private:
/...
std::string::const_iterator _curIter;
const std::string::const_iterator _offend;
/...
};
和我的編譯器是在構造函數的執行抱怨我的_offend
實例:
HtmlRover::HtmlRover(const std::string::const_iterator & it1, const std::string::const_iterator & it2)
{
_curIter = it1;
_offend = it2;
}
它說
No vaiable overload "="
現在我知道這可能與const
變量被設置爲變量的引用有關,bu那麼再次引用也是const
,那麼問題是什麼?我知道const
變量在未初始化的情況下不能存在,但這也不應該成爲問題,因爲_offend
在初始化HtmlRover
對象時正在初始化。
,而不是試圖解決這個問題的語法,我會先問自己,爲什麼一個流浪的對象會需要緩存的迭代器。 http://en.wikipedia.org/wiki/Code_smell – tinkertime 2014-11-21 16:21:45
問題標題爲'+ 1',錯誤概念和錯誤編碼風格(不使用初始化程序列表)的問題爲'-1'。 – rubenvb 2014-11-21 16:22:50
使用初始化列表,因爲它現在'_offend'正在使用賦值運算符,因爲它是常量,顯然是不行的。 – Ylisar 2014-11-21 16:23:07