3
一時ファイルを表すクラスがあります。私は、関数からこれを返す場合は大雑把に、それはそれはコピーが作られ、および削除元であろうというのが私の理解ですので、私はもうファイルを持っていないだろう、このC++で有効なデータのコピーを1つだけ適用します
class TempFile {
private:
std::string mName;
public:
TempFile() :
mName(std::tmpnam(NULL)) {}
~TempFile() {
//File automatically deleted when this goes out of scope
std::remove(mName.c_str());
}
};
のように見えます。
私はヒープ割り当てしてポインタを返すことができましたが、私は非常に強く、生ポインタなしのソリューションを好んでいます。私はブーストまたはC++を許可されていません11。これは動作するはず
TempFile(TempFile& rhs) {
mName = rhs.mName;
rhs.mName = "";
}
が、それは悪だと、ほぼ確実に、後で問題が発生します。
私の最高のアイデアは、誤解を招くようなコピーコンストラクタを定義することです。
あなたはlighweightの独自のバージョン[ 'のstd :: shared_ptr'](http://en.cppreference.com/w/を書くことができますcpp/memory/shared_ptr)。 –
コピーctorと代入演算子をprivateにします。 –