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