Mein Problem ist die Verwendung von const_cast <>. Ich habe eine Klasse, die von Vektor erbt. Wenn ich jetzt in einer seiner Elementfunktionen this->begin()
, this
als const-Zeiger verwende, wird ein konstanter Iterator zurückgegeben, aber ich möchte einen nichtkonstanten Iterator erhalten. Der Code sieht so etwas wie ...Wie bekomme ich einen nichtkonstanten Iterator, während ich einen const "this" -Zeiger verwende?
class xyz : private std::vector<//something>
{
public:
xyz();
void doSomething();
}
void doSomething()
{
xyz::iterator it;
it = this->begin();
*it.insert(something); //here is the problem and this where I need to use const_cast
// and in a lot more places
}
In der obigen Funktion, da this->begin()
eine const iterator zurück, ich bin eine konstante Iterator verwenden gezwungen und tun eine Schublade gesteckt, wenn ich ein Element einfügen müssen.
Ich dachte an const_cast bei this-> Arbeiten beginnen(), aber mein Freund hat mir gesagt, dass es eine schlechte Idee ist, die Konstantheit des this
Zeigers zu entfernen. Wenn es so ist, wie geht es dann?
Eigentlich haben Sie eine Dose Würmer mit * Ich habe eine Klasse, die von Vektor erbt *, warum erben Sie von 'std :: vector'? Es ist nicht für die Vererbung gedacht. –
@Als: Notwendigkeit Ich brauche eine Klasse, die von Vektor erbt, so dass die Klasse selbst als Vektor fungiert und können Sie genauer darüber, warum es keine gute Idee ist zu erben, ich bin neu, also bitte helfen Sie mir. – ken
[Warum sollte ich keine Standardcontainer ableiten/erben?] (Http://stackoverflow.com/questions/6806173/why-should-not-i-subclass-inherit-standard-containers) Sie sollten eher containshipp als Vererbung verwenden. –