トップページ > 過去ログ > 記事閲覧
無茶な希望なのですが……
名前:Likephysics 日時: 2011/06/23 18:20

 こんにちは、前回初回質問の挨拶を忘れてしまっていた。Likephysicsです。今回少し無茶な希望があって書かせていただきます。  前回STL使用について質問させていただきましたが、vectorやstringなどが、ほとんど何も考えずに(意識せずに)使えるように拡張することは出来ませんでしょうか?  本当に無茶苦茶な希望ですみません。

Page: 1 |

Re: 無茶な希望なのですが…… ( No.1 )
名前:いっち 日時:2011/06/23 21:23

string::c_str 等が使用できない特殊な事情があるのでしょうか?
Re: 無茶な希望なのですが…… ( No.2 )
名前:Will 日時:2011/06/23 21:35

自分でラップをつくればいいだけだと思うんですけど。 私は自作のDXライブラリラップクラスを作って、ラップとアプリケーション間はSTLを使用できるようにしていますよ。 自分じゃ作れない(勉強するのも嫌だ)からDXライブラリが合わせてくれ、は無茶を通り越して図々しいかと思います。 DXライブラリにこだわらずにSTLが使用できるDirectXライブラリを探されてみてはどうでしょうか?
Re: 無茶な希望なのですが…… ( No.3 )
名前:sy(サイ) 日時:2011/06/23 23:14

vectorやstringは既に使いやすいライブラリと思いますが? 使い方はインターネットで検索すればいくらでも出てきます。 それにC++をわざわざ使わなくても、C言語とDXライブラリで十分ゲームは作れるはずですよ。
Re: 無茶な希望なのですが…… ( No.4 )
名前:LIkephisics 日時:2011/06/26 14:49

なんだか皆さんお手数掛けてしまったようですみま せん。 特殊な状況があるわけでは別になくて、ふと思って みただけです。今考えてみれば本当に図々しいにも ほどがありますね。すみません。 ところで、Willさん、ラップとは一体いかなるもの なのでしょうか? すみません自分プログラミング にそこまで詳しくないもので syさん、確かにその通りなんですが、すみません現 在作成中のコンソールを拡張するのにCだけの機能に 戻すというのは非常に気が遠くなる作業なのです。 ついでに言えばすみません厳密にはゲームではなく て人工無能です。 皆さん重ね重ね本当にお手数をかけてしまったよう で非常にすみません。
Re: 無茶な希望なのですが…… ( No.5 )
名前:管理人 日時:2011/06/26 16:51

DXライブラリはC++言語上で使用するものなので STL も普通に使うことが可能です なので、STL を使って組んでいた部分をすべてC言語用に書き換えなければならないということはありません sy(サイ)さんは一般的にC言語の方がC++言語よりも簡単なので、 「DXライブラリはC言語の機能だけでも使えますから、C++言語が難しいのでしたら C言語だけでソフトを作るという道もありますよ」 というニュアンスのご発言をされたのだと思います LikephysicsさんにとってC++言語を使う方が簡単でしたら、C++言語の機能を使いながら DXライブラリを使っていただければ良いと思います > vectorやstringなどが、ほとんど何も考えずに(意識せずに)使えるように拡張することは出来ませんでしょうか? 具体的にはどのような機能をご希望されているのでしょうか・・・ 特別にDXライブラリに STL を組み込まなくてもDXライブラリと STL の併用は可能ですが、 それでは何か不都合があるのでしょうか?
Re: 無茶な希望なのですが…… ( No.6 )
名前:Will 日時:2011/06/27 09:52

> ラップとは一体いかなるもの > なのでしょうか?  ラップの言葉が示す通り、ある関数やオブジェクトを「包み込む」関数の事を指します。 例えばDrawStringのコールフォーマットは nt DrawString( int x , int y , char *String , int Color ) ; となっています。 これに以下のようなラップ関数を作ります。 int MyDrawString( int x , int y , string Str, int Color ) { return DrawString(x, y, Str.c_str(), Color); } こうしておけば、アプリケーションではstringをそのまま渡せるように成ります。 あとは、LIkephisicsが使用するDXライブラリの関数だけをラップすればいいのです。 (ラップする必要のないのも当然あるでしょうが) DXライブラリ自体にSTLインタフェースを持たせようとすると、LIkephisicsさんが必要としない 関数も全て改造しなければならないので膨大な作業になります。
Re: 無茶な希望なのですが…… ( No.7 )
名前:Likephysics 日時:2011/06/28 11:56

 皆さんどうもありがとうございます。管理人さんまで出てきてい ただいて……。  今手持ちの本に、この間購入した「標準講座C++[新装版]」 と言うのがあって、C++の開発者さん達の1人が直々に書かれた 本なのですけど、その603ページにc_str()について説明があっ て、そこに「オブジェクトへの操作後への有効性が保証されない」 の用な事が書いてあって、少しc_str()使用に関して抵抗があるので す。そこで、関数にstringを直接入れても大丈夫なようには出来な いかなぁと……。今考えれば、自分で簡単な関数を作れば良いだ けの話なんですけど。まさしく、Willさんのおっしゃっていらっ しゃる通りの事ですね。  Willさん、ラップについてのご説明ありがとうございます。「STL が使える自分で使い勝手の良い関数」と言うとらえ方で良いので しょうか? どうもありがとうございます。  どうも皆さん、お手数おかけ致しました。皆さんの助言等、今後 に生かさせていただきたいと思います。どうもありがとうございま した。
Re: 無茶な希望なのですが…… ( No.8 )
名前:いっち 日時:2011/06/28 19:51

Likephysicsさん> > その603ページにc_str()について説明があって、 > そこに「オブジェクトへの操作後への有効性が保証されない」の用な事が書いてあって、 私はその書籍を所持していないので詳細は分かりませんが、 以下のように string::c_str の使用方法に警告をあたえるのが意図であり、 string::c_str の使用を忌避させるものではないと思います。 > std::string str = "hello world"; > const char* bad_ptr = str.c_str( ); // ポインタを保存。C++の文法としては問題なし > str += " c_str test"; // strに何らかの操作を行った時点で bad_ptr が保持しているポインタの内容は保証されない > printf( "%s\n", str.c_str( ) ); // 全く問題なし。string::c_strの正しい使い方 > printf( "%s\n", bad_ptr ); // 保証されていないので、うまくいくかは運次第。絶対にやってはいけない
Re: 無茶な希望なのですが…… ( No.9 )
名前:Likephysics 日時:2011/06/29 16:59

 いっちさん、わざわざありがとうございます。と にもかくにもポインタは使い方を間違えると恐ろし いことになるということですね。使うにしても、注 意して使いたいと思います。  どうもありがとうございます。

Page: 1 |