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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミングペーパーテスト 次の問題の実行結果を答えろ #include int x[ ] = { 1 2022/06/16 21:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
空ENTERの判別
-
C言語のポインターで詰まっている
-
C++での <iostream.h>と<iostre...
-
constexprについて
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
名前空間でビルドエラー(LNK20...
-
VxWorks 6.4ソケット接続につい...
-
[Win + Eclipse + GCC]socketク...
-
VS2019でofstreamが未定義になる
-
構文エラーが出ているのですが...
-
DLLでダイアログ
-
セグメンテーションフォルトが...
-
wstringの主力
-
c++で、cvMatからvectorへの変...
-
EOFにならない?
-
c++のvirtual関数および継承に...
-
switch文のエラーについて
-
C++で縦の棒グラフ
-
STL string::findで見つからな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
enumの値から定義名を文字列化...
-
VC++で文字列から任意の文字を...
-
C言語 ストリームについて。
-
switch文のエラーについて
-
string型のフォーマット書式指...
-
構文エラーが出ているのですが...
-
空ENTERの判別
-
gccでコンパイル時のエラー
-
なぜ、C++の標準ヘッダをインク...
-
リモートデスクトップの接続元I...
-
JPEGやPNGが読めるLoadImage関数
-
mapの初期化
-
snprintfが使用できない。
-
atlbase.h と afxwin.hの同時定義
-
C言語のエラーを修正したい
-
CSting を TCHAR [] に変換した...
-
#include "fstream.h"
-
構造体配列のvectorへの変換と...
-
【C++】ヘッダ内でstringを格納...
-
CStringとString
おすすめ情報