私の問題はconst_cast <>の使用です。私はベクトルから継承するクラスを持っています。今ではメンバー関数の1つで、this->begin()
、this
をconstポインタとして使用すると、定数反復子が返されますが、非const反復子を取得します。コードはthis->begin()
がconstのイテレータを返すために、私は要素を挿入する必要があるとき型キャストを一定のイテレータを使用して行うことを余儀なく午前、上記の関数でconst "this"ポインタを使用している間、非constイテレータを取得する方法はありますか?
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
}
...のようになります。
私はthis-> begin()でconst_castを使うことを考えましたが、私の友人はthis
ポインタの定数を削除することは悪い考えだと教えてくれました。そうなら、周りの道は何ですか?
実際に、あなたはワームの缶を開けました。*私はvector *から継承するクラスを持っています、なぜあなたは 'std :: vector'から継承しますか?これは継承のためのものではありません。 –
@Als:必要性ベクトルから継承するクラスが必要なので、クラス自体がベクトルとして機能し、なぜそれが継承するのが良いアイデアではないかについてより具体的にすることができます。 – ken
[標準コンテナをサブクラス化/継承しないのはなぜですか?](http://stackoverflow.com/questions/6806173/why-should-not-i-subclass-inherit-standard-containers)継承ではなくcontainershippを使用する必要があります。 –