shared_ptrクラスを使いたいのですが、使えません、どうしてでしょうか?ソースはこれです。
#include<iostream>
#include <string>
#include <fstream>
#include<memory>
using namespace std;
class SMonster{
string name;
int power;
public:
SMonster();
SMonster(int p);
~SMonster(){
};
void SetPower(int p);
int GetPower(SMonster& t)const;
void walk(const string& str);
int GetPoint(void)const;
};
class B {};
class D : public B {};
int main(void)
{
shared_ptr<D> sp0(new D);
SMonster m(200);
SMonster n(100);
std::cout<<m.GetPower(m)<<std::endl;
std::cout<<n.GetPower(n)<<std::endl;
ShowWindow(10);
}
No.5ベストアンサー
- 回答日時:
そのURLは「Visual Studio 2008」の「標準 C++ ライブラリ TR1 拡張リファレンス」説明ページですが、VC2008をお使いですか。
回答に「\visual studio 2005\」とありますが、元々新規C++仕様策定中のお試しなので、
VC2008のSP1 (元はFeature Pack)の追加機能なので、2005では使えません。(指摘済)
http://msdn.microsoft.com/ja-jp/library/bb982198 …
「TR1 拡張は、Visual Studio 2008 Service Pack 1 (VS2008 SP1) の新機能の一部として提供されています。
VS2008 SP1 の入手方法については、http://msdn.microsoft.com/ja-jp/library/e2h7fzkw … を参照してください。」
また、もしVC2008に乗り換える場合でも、
そのページには、「名前空間 : std::tr1」と書いてあります。
つまり、shared_ptrは、std::shared_ptrではなく、std::tr1::shared_ptrです。
よって、using namespace std;ではusingの対象になりませんから、
まず、using namespace std::tr1;である必要があります。(指摘済)
No.4
- 回答日時:
> 回答ありがとうございます。
MSDNで調べたら、> <memory>をインクルードすれば、できるようなことが載っていたのですが。
そのページは何処ですか?
「できるようになるだろう」ではなくて「できる」ですか?
#3の方もかかれてますがshared_ptrの仕様もまだ正式には決まってませんし、
VC(2008の最新)でもtr1でしか使えないはずですが…。
(namespace stdではなくnamespace std::tr1になりますのでusingするならこちらも)
または、boostを別途インストールしていれば、boost::shared_ptrがあるのですが、
インストールやincludeパス設定せずに書いてませんか?>boost::shared_ptr
回答ありがとうございます。Uboostはインストールしていません。RLはhttp://msdn.microsoft.com/ja-jp/library/bb982026 …です。
No.3
- 回答日時:
Visual Studio 2008 ではまだ shared_ptr はないはずなんだけど....
どのような情報か, URL はわかりませんか?
回答ありがとうございます。http://msdn.microsoft.com/ja-jp/library/bb982026 …で見かけました。
No.2
- 回答日時:
「使えない」とはどういうことですか?
現時点では、shared_ptrは標準ではありませんが、どちらのshared_ptrを使ってますか?
コンパイルエラーなら、ヘッダはインクルードしてますか?
(例:Boostをインストールしているなら#include <boost/shared_ptr.hpp>とか、<tr1/memory>とか…)
例えばstd::tr1::shared_ptrとか(boostなら)boost::shared_ptrと書いても同様ですか。
この回答への補足
使えないとは、shared_ptrクラスが定義できないと言うことです。
c:\documents and settings\mycomputer\my documents\visual studio 2005\projects\smonst1\smonst1\main.cpp(45) : error C2065: 'shared_ptr' : 定義されていない識別子です。
処理系はVC++です。言葉足らずですいません。
回答ありがとうございます。MSDNで調べたら、<memory>をインクルードすれば、できるようなことが載っていたのですが。std::tr1::shared_ptrとか(boostなら)boost::shared_ptrと書いてみても駄目でした。
No.1
- 回答日時:
このソースを見せて, あなたは何をしたいのですか? 「使えない」と言っていることからすると, ひょっとして何らかの問題が起きていてそれを解決したいと思っているのでしょうか?
もしそうなら, あなたには書かなければならないこと (そして書けなければならないこと) がもっといっぱいあります. 例えばどこでどのような問題が起きていて, 本当はどうなるはずであるだとか, あなたがどの処理系を使っているのかとか, それくらいは書いて当然ですよね.
どうもすみませんでした。 ご指摘ありがとうございます。
参照カウントを使ってリソースを管理するオブジェクト作りたいのですが、こんなエラーが出ます。
c:\documents and settings\mycomputer\my documents\visual studio 2005\projects\smonst1\smonst1\main.cpp(45) : error C2065: 'shared_ptr' : 定義されていない識別子です。
c:\documents and settings\mycomputer\my documents\visual studio 2005\projects\smonst1\smonst1\main.cpp(45) : error C2275: 'D' : この型は演算子として使用できません
c:\documents and settings\mycomputer\my documents\visual studio 2005\projects\smonst1\smonst1\main.cpp(42) : 'D' の宣言を確認してください。
c:\documents and settings\mycomputer\my documents\visual studio 2005\projects\smonst1\smonst1\main.cpp(45) : error C3861: 'sp0': 識別子が見つかりませんでした
このshared_ptrを使うにはどうしたらいいのでしょうか?
処理系はVC++です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ヘッダーファイルがインクルー...
-
なぜ、C++の標準ヘッダをインク...
-
includeファイルが開けない
-
#include "fstream.h"
-
C++での <iostream.h>と<iostre...
-
C++ 数値データファイルから2次...
-
LinuxのQtに関する質問です。
-
enumの値から定義名を文字列化...
-
指定した文字を削除したい
-
switch文のエラーについて
-
信頼区間の1.96や1.65ってどこ...
-
2÷3などの余りについて
-
複数桁10進数の*桁目だけを抽出...
-
プログラミング初心者です。 Py...
-
std::set<int> で、ある値が何...
-
cout関数を使っているのですが...
-
2の補数を計算するプログラム
-
EXCELの分散分析表のP-値が....
-
構造体の宣言でエラーが出ます。
-
C++でRPGを作成する際のステー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
switch文のエラーについて
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
#defineの使い方について
-
空ENTERの判別
-
C++でShowCursorを使いたい。
-
enumの値から定義名を文字列化...
-
C++での <iostream.h>と<iostre...
-
VS2019でofstreamが未定義になる
-
std::wstringのメモリリークに...
-
wstringの主力
-
JPEGやPNGが読めるLoadImage関数
-
なぜ、C++の標準ヘッダをインク...
-
#include "fstream.h"
-
C言語のエラーを修正したい
-
C言語のポインターで詰まっている
-
#define中の#のエスケープ
-
リモートデスクトップの接続元I...
-
CStringとString
-
【C++】複素数で配列を使いたい
おすすめ情報