2016-07-29 25 views
1

AlleGuter Weg, überladene const vs non-const-Methode in C++ TDD aufzurufen?

schrieb einige ausgefallene Container mit Iteratoren. So habe ich

iterator begin() { 
} 

iterator end() { 
} 

const_iterator begin() const { 
} 

const_iterator end() const { 
} 

Im Test ich instanziieren Container, füllen Sie es und testen Sie es. Was ist ein akzeptierter/guter Weg, um sowohl die const als auch die non-const Version zu nennen? Angenommen, einfacher Test wie

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

sollte für Iteratoren sowie für konstante Iteratoren ausgeführt werden. Const Referenz? Einige hässliche Besetzung?

Antwort

5

würde ich ein const &, um es einfach:

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

Sieht aus wie die beste Wahl, danke –

1

Ich denke, sie nicht zu überlasten ist eine bessere Lösung nach std Konvention.

Deklarieren Sie stattdessen cbegin() und cend().

+3

die std Konvention ist es, alle der oben genannten zu tun: 'Iterator beginnen();', 'const_iterator beginnen() const;' und ' const_iterator cbegin() const; ' – David

+0

keine Option, leider –