- 1 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 13:37:32 ]
- BREW(Binary Runtime Environment for Wireless)についてのスレ
■テンプレ brew.s214.xrea.com/pukiwiki/ kintubo.kakiko.com/brew/ ■前スレ 08 pc8.2ch.net/test/read.cgi/tech/1147832791/ ■過去スレ 07 pc8.2ch.net/test/read.cgi/tech/1137502541/ 06 pc8.2ch.net/test/read.cgi/tech/1126846736/ 05 pc8.2ch.net/test/read.cgi/tech/1119056460/ 04 pc8.2ch.net/test/read.cgi/tech/1111028365/ 03 pc5.2ch.net/test/read.cgi/tech/1096006023/ 02 pc5.2ch.net/test/read.cgi/tech/1076511398/ 01 pc2.2ch.net/test/read.cgi/tech/1011078904/ 関連情報 >>2-10
- 331 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 18:11:02 ]
- 保全
- 332 名前:デフォルトの名無しさん [2007/03/25(日) 03:24:10 ]
- 常時・定期通信制限厳格化まであと7日age
- 333 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 04:20:20 ]
- ユーザーには着うたとかがんがん落とさせるくせに、アプリには厳しすぎる
- 334 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 11:14:40 ]
- >>332
くあしく
- 335 名前:デフォルトの名無しさん [2007/03/26(月) 17:08:51 ]
- >>334
とりあえず法人向けの話だから関係する人で気になる人はサイト見れ
- 336 名前:デフォルトの名無しさん [2007/03/27(火) 18:36:05 ]
- BREW AppLoaderにて間違って日本語のファイル転送してしまったのだけど・・消す方法ないでしょうか・・
- 337 名前:336 [2007/03/27(火) 19:08:33 ]
- 端末のアプリリセットをすると消すことができました。
- 338 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:49:52 ]
- >>336
おれは、アプリフォルダのファイルをすべて消すプログラムを書いて対処したことがある。 // 擬似コード filemgr = CreateInstance( AEE_FILEMGR ); if( filemgr ) { FileInfo info; filemgr->EnumInit("",FALSE); while( filemgr->EnumNext(&info) ) { filemgr->Remove(info.szName); } }
- 339 名前:デフォルトの名無しさん [2007/03/28(水) 23:09:53 ]
- ISSLがわからね〜〜〜
リファレンス以外の資料はどこにあるんだ?
- 340 名前:デフォルトの名無しさん [2007/03/29(木) 02:10:31 ]
- >>339
BREWではやったことないが、昔javaでjsse使って自前でTLSで 通信するサーバーとクライアントは作ったことあるんでちょいと覗いてみた サンプル見る限り、生のソケットあけてISSLに食わせて、適当に接続先の 証明書ぶちこんでネゴさせりゃ動きそうなんだが・・・
- 341 名前:デフォルトの名無しさん [2007/03/30(金) 10:25:27 ]
- サーバからpngファイルをダウンロードして、メモリ上のデータからIImageを作ろうと思ったんだが
一旦ファイルに保存してISHELL_LoadImageしないとダメ?
- 342 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 10:50:21 ]
- つ IMemAStream
- 343 名前:デフォルトの名無しさん [2007/03/30(金) 11:41:37 ]
- >>342
あ〜なるほど、ありがとう。 ちょっと処理が複雑になるけどしょうがないな。
- 344 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 14:05:41 ]
- あれっ、直接ソケットを渡せなかったっけか?
- 345 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 14:26:56 ]
- やばい・・・俺もSSLで嵌った_| ̄|○
まずはテストなのでgetもpostも送らず、 https経由で普通のhtmlを取得しようと思ったのですが IEから接続できるhttps://hogehoge に BREWエミュレータ上からはアレコレやっても-1285が帰ってきます。 ソースはとりあえず下記を参考に、 httpで動作している部分をhttps用に書き換えてはみたのですが (てかAEECLSID_SOURCEUTILを追加しただけ) 何かおかしいであろうところ、注意すべきポイント等ないでしょうか? ttp://brewforums.qualcomm.com/ja/showthread.php?t=299&highlight=https BREW3.1でテストしています。
- 346 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:45:57 ]
- 証明書は?
べりさいん辺りのページには繋がる?
- 347 名前:345 mailto:sage [2007/03/31(土) 00:31:07 ]
- >>346
お返事サンクス ソースはそのまま別のサーバへ接続したら繋がりました。 って事で証明書が問題か・・・ 最終的にはプライベート証明書を使うのですが、 現状見事に失敗してます。 上記ソースのIWebOptsをIX509Chainに変更して証明書を食わせただけですが。 どうも違うっぽい。 ソケットプログラムは理解度が浅いのでIWebでどうにかしたいのですが・・・ もう暫くもがいてみまーす。
- 348 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:05:25 ]
- 最近スレの流れがゆっくりになってきたねぇ…
案件(?)が減ったのかな
- 349 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:53:36 ]
- >>347
証明書のファイル形式は合ってる?BREWが読めるのはDER形式だったはずですが。
- 350 名前:345 mailto:sage [2007/03/31(土) 22:02:33 ]
- >>349
DER形式です。 httpで接続できてる状態のクラスに、 IX509Chainインタフェースの生成 >ISHELL_CreateInstance( getShell(),AEECLSID_X509CHAIN, (void**)&m_ix509Cain); 証明書を追加 >IX509CHAIN_AddCert( m_ix509Cain, WEBOPT_X509_ROOT_CERTS, m_cainBuf, m_cainBufSize ); WebOptを変更 >IWEB_GetResponse(m_iWeb, >(m_iWeb, &m_iWebRes, &m_CB, m_url, >WEBOPT_HANDLERDATA, this, >WEBOPT_METHOD, "GET", >WEBOPT_HEADERHANDLER, headerHandler, >WEBOPT_X509_HOST, m_hostName, >WEBOPT_DEFAULTS, m_ix509Cain, >WEBOPT_END)); という感じでやってますが、何処か問題の有りそうな箇所はありますか?
- 351 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 12:46:45 ]
- >>348
安心しろ、BREW4が出てくると・・・
- 352 名前:デフォルトの名無しさん mailto:中の糞sage [2007/04/01(日) 18:15:59 ]
- >>350
たしかm_cainBufは通信終了まで保持しないとダメ あるいはCOPYOPTSオプションをm_ix509Cainに指定する
- 353 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 18:16:53 ]
- つーかエラーコード書こうぜ
- 354 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 21:34:18 ]
- Cell Phone Suicide Bomber Projectでは協力者を募集しています
www2s.biglobe.ne.jp/~niitsuma/aprilFool/ sourceforge.net/projects/cellphonesb
- 355 名前:345 mailto:sage [2007/04/02(月) 01:54:43 ]
- cainって何だよ○| ̄|_
>>352 メンバ変数は全て通信終了時まで保持しています。 COPYOPTSも指定してみましたがNG。 うーん、サーバ側の設定とかいうオチだといいなぁ・・・ エラーコードは常に WEB_ERROR_SSL で、 エラー時に下記を実行した結果の sslInfo.nResult の値は 0x1001003c でして・・・ >SSLInfo sslInfo; >IWEBRESP_GetOpt(m_iWebRes, WEBOPT_SSL_SEC_INFO, 0, &sslInfo); 意味不明だったので出そうか悩んでました。 ちなみに IWEBRESP_GetOpt はSUCCESSが帰ってきてます。
- 356 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 04:19:48 ]
- SSLInfoの参照の仕方が違う
{ SSLInfo * psi; WebOpt wo; DBGPRINTF("Web Error : %d", resp->nCode); if (IWEBRESP_GetOpt(pme->piwresp, WEBOPT_SSL_SEC_INFO, 0, &wo) == SUCCESS) { psi = wo.pVal; DumpSSLInfo(pme, psi); } SSLInfo * は wo.pVal に入る
- 357 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 08:23:13 ]
- (・∀・)ウォ・ッップバル!
- 358 名前:345 mailto:sage [2007/04/02(月) 11:13:27 ]
- >>356
ありがとです。 おかげでエラーコードを拾えるようになりました。 サーバ側と詰めてきます。 強引なキャストだと思っていたら 見ている資料が古すぎたってことか(;´ρ`)
- 359 名前:デフォルトの名無しさん [2007/04/03(火) 00:02:42 BE:973224285-2BP(0)]
- 組み込み&BREW初心者のJava開発者です。
BREWでC++って使っていますか? Better Cという意味でのC++ではなく、クラスなどのオブジェクト指向としてのC++って意味です。 組み込みやった先輩(BREWは初心者)から、 組み込みは基本的にC。BREWやってた人からBREWでC++やるとはまる、チャレンジャーだねという話を聞いた。 と言われました。 BREWでC++使えますでしょうか?
- 360 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 09:49:01 ]
- >>359
使っていますが全く問題ありません。
- 361 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 10:02:52 ]
- >>359
テンプレートが実質使えないから旨味が半減じゃまいか。
- 362 名前:345 mailto:sage [2007/04/03(火) 15:12:27 ]
- サーバ側と煮詰めたら無事繋がるようになりました。
SSLが遅い!との事でhttpに変更になりました。 ソース全部破棄しました。 本当にありがとうございました。
- 363 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 15:33:39 ]
- >>359
うちも基本的に C++ で書いてる。 >>361 テンプレートは使えるには使えるんだが、容量の都合で用途は限定されるべ。
- 364 名前:359 [2007/04/03(火) 23:58:24 BE:1094877195-2BP(0)]
- 皆さん、レスサンキューです。
C++で問題ないみたいなので、C++で行こうと思います。
- 365 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 02:50:59 ]
- >>364
RVDS2.1以降でC++のサポートが強化されてる namespaceとかtemplate回り 金があるならRVDS買えば幸せになれるかも >>362 UIMカード搭載端末限定だとたぶん回避策あるんだが...それで問題なければ問い合わせて見れ
- 366 名前:359 [2007/04/04(水) 06:52:51 BE:1021885867-2BP(0)]
- >>365
RVDSで幸せになれるというのをもう少し教えてください。 VCだとVCのコンパイラーで通れば何でも書けちゃうけど、 RVDSだとIDEがBREW(ARM)用のC/C++に対応してるとかですか? BREWのSDKに付いてるエミュレーターは、なんちゃってエミュなので、 Windows上でBREW用のソースでテストとかできるなら嬉しいですけど。
- 367 名前:359 [2007/04/04(水) 06:55:33 BE:1094877195-2BP(0)]
- あと、RVDSの価格ですが、バージョンちょっと古い価格表がここに載ってました。
今でも$6000ぐらいからですか? www.jp.arm.com/kk/summary/price.html
- 368 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 10:11:55 ]
- いやコンパイラがC++のより高度な文法をサポートしてるだけ
BREWに関してはデバッグ環境はかわらんよ 値段はシラネ
- 369 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 13:09:34 ]
- おれは C++ で開発してるけど、GNUARM しか使ってない。
- 370 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 00:41:48 ]
- GUNDA(ry
- 371 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 11:33:28 ]
- >>370
これのことか? ttp://www1.interq.or.jp/t-takeda/rx78/index.html
- 372 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 21:52:14 ]
- またえらくなつかしいもんひっぱりだしてきたな
- 373 名前:デフォルトの名無しさん [2007/04/05(木) 21:58:13 ]
- SecurityPass・・・
- 374 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 10:39:53 ]
- 保全.NET 2005 Express Edition。
- 375 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 09:43:26 ]
- 通信中や処理中にキーを連打すると、
通信や処理終了後に連打した分のキーイベントが、 全て起こってしまうんですが、 これを上手く回避する方法はないでしょうか?
- 376 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:08:13 ]
- 無視すればいいんじゃね?
- 377 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:36:30 ]
- 二つとか三つとか音楽を同時に再生をスタートさせる方法ってある?
IMEDIA_Playを並べて書いてみたらズレまくって困る
- 378 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:45:32 ]
- 普通に2つ並べて書いて問題起こったこと無いな。
データがおかしいのかも。
- 379 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 14:09:01 ]
- なんと言えばいいのかな。
全部の音は、鳴ることは鳴ってるんだけど。 ただ、並べて再生してみたら数ミリ秒とかそんなぐらいなんだけどスタートがズレてて、 後ろに書いた方がタイミングがズレてるような感じを受けるんだ。
- 380 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 14:28:16 ]
- FA:そんな厳密な同時性を携帯端末に求めるな
- 381 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:24:41 ]
- IFileMgr_GetFreeSpace(IFileMgr * pIFileMgr, uint32 * pdwTotal)
の *pdwTotal って何?
- 382 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 15:56:59 ]
- >>381
BREWAPIReference.chm
- 383 名前:381 mailto:sage [2007/04/13(金) 16:43:56 ]
- >>382
すんません。 「ファイルシステムで現在使用可能な空きバイト数」(戻り値)とはちがう、 「ファイルシステム内の合計空き容量」(*pdwTotal)って何だ?と思って。 k-brew-testでほぼ目一杯にしてて、*pdwTotalがEFS全体に近いような値だったので、 これ何だろと。 他のアプリも含め、アプリが作成したファイルを全部削除した場合の空き容量とか? >>381 最初からそう書いとけ
- 384 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 17:43:50 ]
- 気にしなくていいと思う。
- 385 名前:381 mailto:sage [2007/04/13(金) 18:26:37 ]
- なるほど、そうしてみる。(・∀・)
- 386 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:06:49 ]
- >>383
>「ファイルシステムで現在使用可能な空きバイト数」(戻り値) EFSのうちの空き容量。 >「ファイルシステム内の合計空き容量」(*pdwTotal)って何だ? EFS全体のサイズ。だからTotal。 システムが占有する分がいくらかあるだろうから仕様書の値とは若干違う。 だから「EFS全体に近いような値」(であって大きく外れた値ではない)。
- 387 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 10:28:43 ]
- すみませーん。
IDATAFOLDER_SelectUI なんですが、 第4引数の dwMaxFileSize の説明に 『選択するファイルサイズ合計値の上限。(単位はKB)』 とあるので100と指定してみたのですが、 余裕で100KB超のファイルを選択できます。 仕様と思っていいんでしょうか? テストに使用している機種はW42SAで、 端末仕様書を見る限り特に制限とか書いてないようなんですが。
- 388 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 16:49:48 ]
- >【複数選択時の残表示について】
(略) >この機能は移動機依存であり、実装されない移動機もあります。 こういうことじゃない?
- 389 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:00:22 ]
- KDDI向けのBREW3.1日本語で開発していますが、質問です。
世に出回っているアプリ起動中に、電源ボタンを押すと、 xxxを終了します。よろしいですか? 1中断する 2終了する 3キャンセルする と端末共通ぽいダイアログがでますが、これの呼び出し方法が判りません。 何かの設定をすると自動で出るのか・・・KDDIのライブラリを呼ぶのか・・・色々調べたけどダメでした。 判る方居たらよろしくお願いします。
- 390 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 22:13:50 ]
- >>389
サービスガイドを「ダイアログ」で検索。
- 391 名前:デフォルトの名無しさん [2007/04/17(火) 23:04:23 ]
- >>389
サービスガイドはひととおり読んだほうがいいんじゃないでしょうか・・・ あと、事前検証手順書とチェックシートは今のうちに一回眺めておくと 後で幸せかもしれません。
- 392 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 23:04:24 ]
- >>389
その周りって、2.1と3.1でスペックが微妙に違うよな。2.1だと何も考えなくても よかったんだが
- 393 名前:389 mailto:sage [2007/04/17(火) 23:44:10 ]
- レスくれた方ありがとう、読み直してきます。
- 394 名前:387 mailto:sage [2007/04/18(水) 10:16:14 ]
- >>388
どうやらそのようで。 今日別の端末が届いたので同じアプリを入れてみたら、 「あと100KB」と表示が出ましたとさ。 その文言はどう見ても「複数選択」の方に かかりそうな気がするんだが・・・ 何だかなぁ(゜д゜)
- 395 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 00:55:32 ]
- BREW携帯に送れないの?意味無いような・・・
- 396 名前:デフォルトの名無しさん [2007/04/22(日) 02:00:22 ]
- >>395
試験モードになってりゃシリアルケーブルで送れるよ。 sigファイルを定期的に取り直せば勝手アプリだって 自由に動かせるよ。便利だよ。
- 397 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 02:14:57 ]
- くそー
メンテのせいで仕事がーーー
- 398 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 02:38:08 ]
- メンテなんてやめんて
- 399 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 03:29:23 ]
- 這(゚Д゚ )
- 400 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 18:39:15 ]
- 検証提出直前3日前だと笑い死ぬと思う。
- 401 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:03:23 ]
- メンテで提出日に出せません
あーん?聞こえんなぁ 徹夜してでも間に合わせろ なんとか終わらせました あーん?何徹夜残業してんだよ メンテでできなかったからです あーん?そんなもん知ったことか ちゃんと計画立ててないのが悪い 残業代でないからな
- 402 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 22:15:17 ]
- もっともだ・・・
- 403 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 22:41:04 ]
- もともと残業代のない俺は勝ち組
- 404 名前:デフォルトの名無しさん [2007/04/24(火) 15:08:09 ]
- 20日に検証中に変わったんだが 一向にこちらのサイトにアクセスがない。
もしかしてsigファイルとれなくて実機での検証がまだとかなのだろうか・・・
- 405 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 17:34:24 ]
- 検証始まったんなら、ぼちぼち作業が進むんでない?
まだ3営業日しか立っていないんで、何とも言えない希ガス。
- 406 名前:デフォルトの名無しさん [2007/04/25(水) 01:22:22 ]
- >>405
18時位からアクセスが来た。しかもこの時間になっても検証作業してる。 がんばれ検証ラインの中の人。
- 407 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 01:53:37 ]
- じゃあ、やっぱりsigか?
無効も迷惑こうむってたんだな・・・
- 408 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 13:17:02 ]
- なんか、最近は検証も外注とか何とかそういう話が出ているようですね。。。
- 409 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 07:47:57 ]
- がんばれ、KDDI検証の人!
連中にはいろんな意味で頭があがらないぜ。
- 410 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 00:49:42 ]
- 最近も何も、初めっから検証は外注
- 411 名前:デフォルトの名無しさん [2007/04/27(金) 01:05:36 ]
- 検証通ったようでステータスが登録中になったよ。ありがとう中の人。
- 412 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:24:51 ]
- sig、なおらないねー・・・
- 413 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 09:56:08 ]
- gnudeの情報は出ていましたが、WinARMって誰かもう使ってますか?
ソースはC++で、静的変数をいっぱい使っていたりするんですけれど。 それから、こちらはRVDS2.xが前提みたいですが、lightblueの modジェネレータって、誰か使って成功しています?
- 414 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 13:17:34 ]
- sigとれるようになったー
・・・って有効期限が1年になってるけど、あってるの?これ・・・
- 415 名前:デフォルトの名無しさん [2007/05/01(火) 01:52:48 ]
- みんなデスマってるか〜?
- 416 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 09:15:07 ]
- ん? 俺は連休中だ
- 417 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 21:11:37 ]
- >>416
いいなぁ、お前、どうせ去年からずっと連休なんだろ?
- 418 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 00:35:20 ]
- さすがにそこまでのヤツはこのスレには来ない予感
- 419 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 14:34:57 ]
- 黄金連休は9連休だった。
- 420 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 15:21:34 ]
-
こ れ か ら 2 ヶ 月 祝 日 な し
- 421 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 15:45:37 ]
- 祝日があっても休めなかったりするのに
何言ってんだ?(・ω・)
- 422 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:00:22 ]
- 休めるわけじゃないが、遅刻しても平気なだけマシなのだな
- 423 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:28:33 ]
- しかし連休明けと同時に書き込みが始まるのは判り易いよな
- 424 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:37:54 ]
- Javaのインターフェースのような振る舞いをさせたい場合はどうしたらいいんだろう?
クロスキャストで質問なんだが。。。 Javaからの移植を今やってる。で以下の継承ツリーを持つクラスがある。 Object -> ClassA -> ClassB -> ClassC -> ClassD ↑ ↑ Object -> ClassE ↑ ↑ Object -> ClassF -> ClassG ※)みぎにいくほどサブクラス。ClassE,ClassF,ClassGはJavaではインターフェース。 BREWでは純粋仮想関数だけを持つクラス ちなみにClassBの宣言は class ClassB : public ClassA, public virtual ClassE ClassCの宣言も同様に class ClassC : public ClassB, public virtual ClassG でこのクラスに対して ClassD* classD = new ClassD(); ClassC* classC = (ClassC*)classD; ClassB* classB = (ClassB*)classC; Object* obj = (Object*)classB; とUPキャストしてObject型にする。んでそのあとに ClassG* classG = (ClassG*)obj; classG->hoge(); をやるとまったく違う関数が呼ばれてしまう。。。。どうしたらいいんだろ。。。。
- 425 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 02:07:48 ]
- 何で仮想継承してるのか分からんけど、普通に多重継承させて
ClassG* classG = static_cast<ClassG*>(static_cast<ClassD*>(obj)); obj->hoge(); でいけることない?
- 426 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 02:57:58 ]
- 仮想継承消して実験してみたら、↑のは曖昧って怒られた。
むかついたからこんな風にしてみた。 IClassG* classG = (IClassG*)(ClassD*)(ClassC*)(ClassB*)(ClassA*)obj; classG->ClassGFunc(); 今は反省していない。 >>424 Object にキャストしたときにはもう元の型情報が失われてるから、 ClassG* にするために何バイトオフセットをずらせばいいかが分からない。 だから正しい型(ClassG を継承した型)に戻した上で ClassG* にキャストしてやる必要がある。
- 427 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 04:12:34 ]
- >>426
それでいけるのも分かるのだが、 しかしそうすると、たとえばIClassGを実装したクラスが 3つあるとすると、それらをIClassG型で扱いたいのに、いちいち元の型を しらべて、それに一度キャストしてからIClassGに戻すということをしないといけない。 JavaではIClassG型として受け取れば元の型が何であろうと IClassG型のメソッドは呼べる。 できればJavaと同じ振る舞いをさせたいんだけどいい方法ないかなぁ・・・・ COMのQueryInterfaceみたいなのを作るしかないのかな・・・・・
- 428 名前:427 mailto:sage [2007/05/08(火) 04:16:36 ]
- 追記。
いったんObject型にしちゃうのは、JavaでいうVectorみたいな 可変長配列に入れてるためです。 templateにしてないのはプリミティブ型を入れたくないから。 まぁ元がJavaからの移植なのでできるだけJavaのコーディングを 真似したいということです。
- 429 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 08:55:57 ]
- >>428
少々めんどくていいなら、 struct Object { int type; void* obj; }; こんな感じのクラスを可変長配列に格納すればいいんじゃないかと。 受け取った側は type を見て適切な型に頑張って自分でキャストする、と。 >>427 それをするためには RTTI が不可欠になってくるので、 自分でそういった機構を作る必要が出てくるだろうなぁ。 正直俺はやる気がしない。
- 430 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:29:48 ]
- ARMのコンパイルしたら
#include file "なんたら" wouldn't open がズラーっと並ぶ。 なんたらのところは追加インクルードディレクトリの中にあるヘッダーファイル どのへんをいじってみたらいいのかもわからんボスケテ
- 431 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:39:47 ]
- >>430
-Iオプションで追加インクルードディレクトリを指定してあげたらいいんじゃないかな。
|

|