So habe ich eine Klasse wie folgt:Korrekte Art, Casting in C++ 11 zu schreiben?
A{
init(int a){
_data.resize(a); //! (1)
}
//other code is unimportant
private:
std::list<std::vector<double>> _data;
}
In (1) i mit Text Warnung bekam: implizite Konvertierung von int zu size_type (aka lange unsigned)
Ich möchte wissen, was die meisten ist richtige Weg, um diese Warnung loszuwerden? Vielleicht so etwas wie folgt aus:
_data.resize(static_cast<decltype(_data)::size_type>(a)
Anmerkung:
Ich denke, dass dies:
init(size_t a)
ist der richtige Weg, aber lassen Sie uns annehmen, dass wir nicht Schnittstelle
'init (size_t a) {' –
@Revolver_Ocelot Ich vermute, dass dies der richtige Weg ist, aber lassen Sie uns annehmen, dass wir die Schnittstelle nicht ändern können – tty6
Anstatt etwas zu werfen, scheint es sinnvoller * zu überprüfen * ob das Argument als der Grössen-Typ des Containers darstellbar ist . –