2

auto_ptrを学習しようとしているので、以下のコードを書きましたが、結果は

..\src\main.cpp:23: error: no match for 'operator=' in 'p1 = source()()'

私は何を間違えましたか?返された auto_ptr をどのように割り当てますか?

#include <stdio.h>
#include <memory>

using namespace std;

auto_ptr<int> source() {
    int *i = new int();
    *i = 100;
    return auto_ptr<int>(i);
}

int main() {
    std::auto_ptr<int> p1, p2;

    p1 = p2;
    p1 = source();

    return 0;
}
4

1 に答える 1

3

それはいけません。

auto_ptr根本的に壊れたクラスです。を使用する必要がありますunique_ptr。問題の核心はauto_ptrコピーできないことですが、C++03 にはムーブ セマンティクスが含まれていません。セマンティクスauto_ptrは実際には何の役にも立たない壊れたハックです。

于 2012-07-16T19:55:51.730 に答える