std::auto_ptr
の使用に問題があります。私はGCC 4.6.1を使ってUbuntu 11.10で次のようにコンパイルしようとしました。エラーメッセージerror: no match for call to ‘(std::auto_ptr<int>) (int*)’
が出ます。std :: auto_ptrを初期化しています: "エラー: '(std :: auto_ptr <int>)(int *)'への呼び出しに一致しません。"
#include <memory>
#include <iostream>
class Toy {
public:
std::auto_ptr<int> foo;
Toy() {
foo(new int(3));
}
};
int main() {
Toy toy;
std::cout << *toy.foo << std::endl;
return 0;
}
私はstd::auto_ptr<T>
は、そのコンストラクタの引数としてT*
にかかるかなり確信していたが、どうやらない...私の謝罪これは些細なまたは重複した質問であるならば、私はアーカイブを検索し、発見していません答え。 thisのような場所は、上記のコードがうまくいくはずです。とにかく、どんな助けもありがとう!
リセット機能についてお返事ありがとうございます!私はそれが私が必要とするかもしれないと思います。そして私は新しいint(3)を意味しました。これは私が問題を抱えているコードではありません。これはテストするために思いついたおもちゃの例です。intに値を入力して画面に印刷する必要がありました。 –
@anjruu:ok、答えの最初の部分だけを残しておいてください。それは、 'line'という名前のフィールドに割り当てられた' new int(3) 'が、その潜在的な誤解について私の頭の中で警鐘を鳴らしたことだけです。 –
ああ、あなたはまったく正しい。元のコードから変更するのを忘れてしまった、ありがとう。私は私の質問でそれを編集します。 –