私はstd::vector<unsigned int>
から派生したクラスStep
を持っています。静的メソッドから返された値の代入に使用されるディープコピーのために、代入演算子をオーバーロードする必要があります。私は割り当てにthis
にrhv
のすべての要素をコピーしてください方法をfigurすることはできません。std :: vectorサブクラスのオーバーロードされた代入演算子でディープコピーを行う方法<T>?
class Step : public std::vector<unsigned int>
{
public:
friend std::ostream& operator<<(std::ostream& outStream, const Step& step);
Step& operator =(const Step& rhv);
static Step fromString(const std::string &input);
// Something like: Step x = Step::fromString("12 13 14 15 16");
private:
double time;
double pause;
unsigned int id;
std::string name;
};
、その後=
をオーバーロード:彼らので、標準コンテナからの継承
Step& Step::operator =(const Step& rhv)
{
time = rhv.time;
pause = rhv.pause;
id = rhv.id;
// How should I copy contents of rhv to `this` safely?
return *this;
}
標準ライブラリのコンテナから派生しないようにしてください。彼らはそれのために設計されていないので、あなたは安全にそれを行うことに非常に注意しなければなりません。とにかく 'std :: vector'から継承したいのはなぜですか? – jalf
なぜ割り当てオペレータに過負荷をかけなければならないのですか?あなたが手動のリソース管理を行っていないので、コンパイラは、私がそれを見ているようにうまく動作するはずです。 – Grizzly