a またはなどのより良いオプションがあることは知っています。私の場合、動的に割り当てられた配列へのポインターを使用する必要があります。これは、コピー アンド スワップのイディオムを学習しており、独自のリソース管理クラスを作成する必要があるためですstd::vector
。std::array
リソース ハンドル クラスの次のコピー コンストラクターがあるとします。
A(const A& other) : size(other.size), arr(size ? new int[size]() : nullptr) {
std::copy(other.arr, other.arr + size, arr);
}
Visual Studio (2013 Preview または 2012 Express) ではコンパイルされません。私が得ているエラーは次のとおりです。
std::copy
コンパイラが私に怒鳴るのをやめるように別の方法で使用することは可能ですか? または、次のような単純なループを使用して配列の内容を手動でコピーすることをお勧めします
for (int i = 0; i < size; i++)
arr[i] = other.arr[i];
PS警告などを無効にするためにハック/マクロを使用したくありません。