2016-07-29 7 views
1

すべてC++ TDDでoverloaded const vs non-constメソッドを呼び出す良い方法はありますか?

は、イテレータを使用してファンシーコンテナを作成しました。だから私は持っている

iterator begin() { 
} 

iterator end() { 
} 

const_iterator begin() const { 
} 

const_iterator end() const { 
} 

私はコンテナをインスタンス化し、それを記入してテストします。 constとnon-constの両方のバージョンを呼び出すことができますか?簡単なテストは、イテレータとconstイテレータの両方で実行する必要があります。

TEST(c.end() - c.begin() == c.size()); 

のようにしてください。 コンスタントリファレンス?いくつかの醜いキャスト?

答えて

5

私はそれへのconst &になるだろう:STD大会は、上記のすべてを行うことです

const container& constC= c; 
TEST(constC.end() - constC.begin() == constC.size()); 
+0

ベスト・セレクションのようです –

1

これらのオーバーロードは、stdの規約のより良い解決策ではないと思います。

cbegin()cend()を代わりに宣言してください。

+3

: 'イテレータが始まる();' '、および;'、 'const_iteratorの開始()constとしてconst_iterator cbegin()const; ' – David

+0

オプションはありません、残念ながら –

関連する問題