2014-03-28 50 views
0

我希望超載運算符[]。我希望接受一個std :: wstring :: iterator作爲這個方法的參數。但是,我希望增加此迭代器直到達到wstring的末尾。有沒有辦法做到這一點?下面是一些僞ISH-代碼,希望這將讓我的主張明確:我可以測試一個wstring :: iterator是否與非特定的:: end相等?

MyClass operator[](std::wstring::iterator it) 
{ 
    /* Obviously this wstring::iterator::parent method is a figment 
    * of my imagination; but hopefully it'll give the reader some 
    * idea what I wish to achieve. */ 
    while (++it != it.parent_wstring.end()) 
     { party(); } 
} 

我曾試圖用型鑄造nullptr如下比較:

if (it == (std::wstring::iterator)nullptr) 
    { party(); } 

,不得不在這個奇妙的想法:

if (it == std::wstring(L"").end()) 
    { party(); } 

但都沒有工作。如果上述任何一種努力導致恐慌,道歉(和一些興奮的虐待)。

+0

這有什麼好處? –

+0

我只能接受operator []的一個參數。每個人都知道有兩個論點的黨派是可怕的。當然,我可以只寫一個有兩個參數的方法;但我正在努力變得聰明。 – mkingston

回答

0

明白了。八九不離十。

if (*it == 0) 
     { party(); } 

這讓我參加我想要的派對。請,任何其他答案(這可能是一個更好的主意,而不是基本解引用末端迭代器),鼓勵!我要去找出我可以依靠零那裏有多少..

+0

這是未定義的行爲,如果它==結束 –

+0

確實如此。但是,wstring從basic_string繼承。哪個(如果它是一個C字符串)將始終有零。如果標準堅持這樣的話;我將繼續魯莽放棄。希望沒有人能使用我的軟件,對吧? – mkingston

+0

(雖然我懷疑像這樣的實現細節可能會被忽略..) – mkingston

相關問題