[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/05 14:43 / Filesize : 200 KB / Number-of Response : 965
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

D言語 Part18



1 名前:デフォルトの名無しさん [2008/04/14(月) 15:16:22 ]
プログラミング言語 D (D Programming Language) について語るスレッドです。
過去スレは >>2

■本家
ttp://www.digitalmars.com/d/
ttp://www.kmonos.net/alang/d/ (和訳)

■コンパイラ
ttp://www.digitalmars.com/d/dcompiler.html (DMD, 本家)
ttp://dgcc.sourceforge.net/ (GDC, gccフロントエンド)

■参考URL
ttp://f17.aaa.livedoor.jp/~labamba/ (D言語研究)
ttp://f17.aaa.livedoor.jp/~labamba/?D%B8%C0%B8%ECBOF (D言語BOF)
ttp://dsource.org/ (dsource)
ttp://tinyurl.com/3da5oa (C/C++に疲れた人のD言語)
ttp://www.kmonos.net/alang/wnd/ (わかったつもりになるD言語)
ttp://shinh.skr.jp/d/ (SDL, SDL_*, OpenGL, GLU, glutのポーティングとか)
ttp://shoo.s20.xrea.com/shoo/programing (D言語とTangoの入門講座)
ttp://www.nicovideo.jp/mylist/4453698 (D言語で作られた芝ゲー niconico動画)
ttp://www.asahi-net.or.jp/~cs8k-cyu/ (ABA Games)

■ IDE
ttp://dronten.googlepages.com/dscite (DSciTE)
ttp://forums.codeblocks.org/index.php?board=20.0 (Code::Blocks)
ttp://www.dprogramming.com/entice.php (Entice Designer)
ttp://www.dsource.org/projects/descent (Descent)
ttp://www.dsource.org/projects/poseidon (Poseidon)

477 名前:デフォルトの名無しさん mailto:構文上無理かね? [2008/06/19(木) 16:37:52 ]
ここまで型を書かなくてよくなったら
もういっそのこと無名関数テンプレートが欲しくなったんだがw
auto dg = (T,U)(T t, U u){ return t+u; };
するとこうなって
auto dg = (auto t, auto u){ return t+u; };
最終的にはこうか?w
auto dg = (t, u){ return t+u; };
これなんてマクロ?

478 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:40:21 ]
つーか、macroキーワードが使える日が早く来ればそれでいいんだよ…

479 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:50:40 ]
無名関数テンプレートが欲しいのは分かるが、できるとしても
alias (T,U)(T t, U u){ return t+u; } dg;
が精一杯。

480 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 17:09:07 ]
>>477
どうぞ。

auto dg = new class {
auto opCall(T, U)(T t, U u) {
return t + u;
}
};

481 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:27:30 ]
writeln(typeid(typeof((int i){})));

2.015でデリゲート型の引数が表示されないんだけど、前からだっけ?

482 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 21:08:46 ]
>>470
この会社に入りたい

483 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 22:04:03 ]
>>481
前からじゃない?
↓1.0
codepad.org/CREaEBun

484 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 02:58:03 ]
なんでBufferedFileはデストラクタでcloseしないんだ

とおもってソース見てみたら、そもそもデストラクタなかった。
どうなってんだよ。

485 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 03:26:35 ]
> これはつまり、 デストラクタからはメンバオブジェクトを参照できないことを意味しています。
これがなければデストラクタも使い物になるというものの…



486 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 03:57:45 ]
とりあえず必要だと思うのは、scopeメンバ変数だな。
コンストラクタで一回だけ初期化できて、オブジェクトがdeleteされるときに道ずれにdeleteするの。

487 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 04:04:44 ]
Tango導入しようかなあ…
phobosは統一性なさすぎて辛い…

488 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:30:25 ]
>>485
ファイルハンドルのような開放しなければならないメモリはガベコレの外にあるのだから、デストラクタに開放処理を書いても問題ないと思うけどね。

489 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 14:33:35 ]
IDisposable的なhackが必要になるってことか。

490 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 15:29:12 ]
>>485
これって、メンバオブジェクトをdeleteすることも認められないのかな?

491 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 18:20:16 ]
あーもー英語使わなくてもphobosのtrunkにコミットできたい

492 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 19:39:11 ]
staticメンバにリストを作って管理とか無理かな

493 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:29:05 ]
>>486
そんなのイラネwwww
って思ったけど、必要だな・・・

494 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 21:45:08 ]
>>488
たしか、デストラクタって呼ばれる保証はないんじゃなかったっけ?
だとしたら確実に行われなければならない処理をデストラクタに書くことはできないと思うのだけど。

495 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:10:12 ]
デストラクタからcloseとかの後始末関数を呼べばいいよ。
scope変数に入れたときは、必ずスコープアウトするときにデストラクタ呼ばれるから。



496 名前:デフォルトの名無しさん [2008/06/21(土) 23:15:25 ]
C++で言うところの純粋仮想関数のように、
抽象クラス側のメンバ関数定義において
派生クラスで必ず上書きをする事を明示する修飾子ってありますか?

497 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:19:56 ]
abstract

498 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:26:36 ]
>>497
ありがとうございます!

499 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 23:27:51 ]
abstract属性

500 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 03:41:51 ]
  auto outfile = new FileConduit("output.txt", FileConduit.WriteCreate);
  auto file = new FileConduit("hogehoge.txt");
  auto buf = new BufferInput(file);
  while (buf.fill(buf) != IConduit.Eof) {
    auto str =  buf.slice(buf.readable);
    Cout.output.write(str);
    outfile.write(str);
  }
Tango なんだけど、Conduit から入力したものを複数の Conduit(?) に出力したいとき、
こういう風に一回バッファを介すしかないの?なんだか妙に生ぐさいやり方で気持ち悪いんだけど、
もっと良い方法ない?Conduit, Buffer, Input/OutputStream のあたりの仕組みが全く理解できない

501 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 05:45:30 ]
OutputStreamを継承して、複数のOutputStreamに流し込むようなオブジェクトを作ればいいのでは?
codepad.org/hco2juAc

502 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 07:15:28 ]
std.algorithmって今のところ配列にしか使えない?
自作のコンテナでも、イテレータ定義すれば使えるのかなと思ったんだが、そもそもイテレータの作り方がよくわからん。
opStarAssignとかないし。

503 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 11:34:52 ]
>>502
それ、以前調べたけどまだ無理だと思う。
std.algorithm の中でイテレータに対して foreach range 文を使ってるんだけど
現状では foreach range 文をカスタマイズできないから、独自イテレータを定義できない。

504 名前:500 mailto:sage [2008/06/22(日) 13:27:30 ]
>>501
おお、わざわざdクス。その方向でいってみるよ、ありがとう。

505 名前:500 mailto:sage [2008/06/22(日) 17:02:06 ]
あやしい InputFilter を作ることで、どうやらやりたいことが出来たみたいだ。
改めて>>501にdクス。
ttp://codepad.org/FtRWpF3b



506 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 19:23:09 ]
ConduitとStreamってどう違うの?

507 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 22:13:10 ]
IConduitはInputStreamかつOutputStreamなのだから、同じなんじゃないかと。
ただ、どうやらConduitがベースになってて、他の便利なストリームに突っ込んで使うのがいい感じらしい。
Conduitは「入出力先」、Streamは「使い方」みたいな使い分けなんじゃないかと思う。
あと、InputStreamとOutputStreamはほかのStreamとは若干違って、Conduitの役割をInputとOutputで分割したようなものだと思って使ってる。

508 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:15:20 ]
>>503
なる。どうもありがとう。
……がっかりだーorz

509 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:16:36 ]
はぁ?手軽に最高速がDの売りなんじゃないですかぁ?
バカなの?

ぶっちゃけC++のほうが100万倍マシ

510 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:22:31 ]
ええ全く、ウォルタンに言ってやってくださいよー

511 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 09:25:52 ]
>>509
元ネタはRubyだったのに何でC++に変えたの?

512 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:40:30 ]
複数ファイルを一度にimportする方法ってありますか?

// ファイル a.d
module  a;

// ファイル b.d
module b;

とかあった場合に

// ファイル include.d
module include;
import a;
import b;

とかして
import include;
でaとbをimportみたいにしたいのですが。

513 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:02:24 ]
public import a, b;
とかかな。
調べずに発言

514 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:43:31 ]
文字配列の連想配列の配列の配列の長さを変えるにはどうしたらいいのでしょうか
int main(){
char[][char[]][] list;
list.length = 100;
return 0;
}
とすると途中で止まってしまいます。
どのようにしたら止まらせずにlistの長さを伸ばしたり縮めたりできるのでしょうか


515 名前:514 mailto:sage [2008/06/23(月) 14:46:04 ]
すみません既出のバグなんですね…
>264試してみます



516 名前:514 mailto:sage [2008/06/23(月) 15:04:03 ]
すみません、やっぱり分からないです
nullで埋めるというのも分かりません
list[0] = null; とやっても使えないですし

連想配列を含む配列は使わない方がいいのでしょうか

517 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:30:43 ]
別にそれ自体として使わないほうがいいってことはないだろうが、
バグがあるんだから使わないほうがいいだろう。実際に使えないわけだし。

518 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:41:51 ]
動いた
codepad.org/og1d1ogP

519 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:44:49 ]
連投失礼
しばらくしたら消えるみたいだし、一応貼っておく
--
int main(){
typedef char[][char[]] Map = null;
Map[] list;
list.length = 100;
writef(list.length);
return 0;
}

--
100

520 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 18:51:37 ]
しばらくといっても結構長いみたいだね
>>20のもまだ消えてないみたいだし

521 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 19:12:28 ]
>>20
template Res(int N, O)
{
res!(N) << O.toString();
in { assert(O >> N); }
invariant O = N;
enum O = N;
throw new O(">>" ~ N.toString());
}

mixin Res(1, 乙);


はっちゃえ

522 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 19:43:26 ]
何のコードかと思ったら>>1乙とはw

523 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:02:01 ]
foreach( i, v, vs) {
 if( v.noneed ) {
  vs.remove(i);
 }
}

これが、2.0.15でできなくなった・・・
しかたないか

524 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:11:30 ]
foreach( i, v; vs) {
じゃなくて?

525 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 21:21:00 ]
あ、それそれ ごめん



526 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 23:08:02 ]
>>518
ありがとうございますm(_ _)m
不思議だ…
何でtypedefかませると動くんだろう

もう構造体かクラスかで囲ってそれを配列化しようかとか思ったけど
凄い人はやっぱりいるもんだなぁ

既出だろうけどモジュールと同じ名前のディレクトリがあるとldで躓いてコンパイル失敗するね
>519を動かそうと思ってn.dってファイル作ってdmd nさせたら
nってディレクトリがあるもんだから失敗した\(^o^)/

527 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:17:50 ]
ttp://dsource.org/forums/viewtopic.php?t=3279
このやたらハイテンションな中国人によると、Entice Designer で日本語が入力できない問題は、
同梱の Scintilla のバージョンが古いせいらしい。このポストのとおり、SciTE のバイナリを
落としてきて、SciLexer.dll -> enticelex.dll にリネームして上書きすれば日本語が通ったよ。
Entice、補完はいまいちだけど Descent より軽いので、漏れはコードエディタとして重宝してる。

528 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:30:56 ]
連想配列のlengthは読み取り専用だから>>261は動かなくて当然だけど、
>>514は連想配列か普通の配列かの判断が甘いから起こるのかな。
typedefすれば確実に普通の配列だとわかるからlengthに値をセットできる、と。

529 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:47:32 ]
>>528
その理屈はおかしい、
>>261のaは連想配列ではなくて動的配列だし、
typedefすることによって型の曖昧さが減るということもありえない。

530 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 07:09:37 ]
実行環境がLinuxだからとかではなくて?

531 名前:518 mailto:sage [2008/06/24(火) 08:01:25 ]
一応説明すると、
配列のところ読んだら連想配列も動的配列も長さ0で初期化されるとあったから
ふとtypedefするときに初期値を新しく指定できるっていうのを思い出して試しただけだったり
(最初は適当な配列で初期化しようとしたけど、連想配列リテラルがよく分からないからnullにしたら動いた)
試しにtypedefの
= null
を削るとcodepadでもTimeoutする

何で初期値指定すると動くのかとかはよく分からんが

532 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 15:15:58 ]
>513
できました!ありがとうございます。

533 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:30:23 ]
>>531
本来、nullと長さ零の配列は同じ扱いのはずなんだけどねえ

534 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:55:41 ]
全く同じわけではないらしい

void main()
{
int[] a = null;
int[] b = [1,2,3];
b.length = 0;
assert(a == b); // success
assert(a is b); // fail
}

535 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:30:46 ]
>>533
最初の頃はそういってたけど、いつの間にか仕様が変わったらしい。



536 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:08:17 ]
下記のように場合に、インナークラスから自身が持つフィールドと同名の
親階層のフィールドにアクセスしたい場合の方法ってありますか?
superは継承の場合だし、CTest.Value_はコンパイルエラーに。

class CTest
{
 int Value_;
 CInner Inner_;
 class CInner
 {
  int Value_;
  void Function(){
   // 自身のValue_を表示
   writefln("%d",Value_);
   // 親階層のValue_を表示する場合は??
   writefln("%d",???);
  }
 }
 this(){
  Value_ = 1;
  Inner_ = new CInner();
  Inner_.Value_ = 2;
 }
 void Function(){
  Inner_.Function();
 }
}

537 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:28:43 ]
>>536
ttp://www.kmonos.net/alang/d/2.0/class.html#nested

538 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:50:47 ]
>>537
ありがとうございます。
this.outer.Value_ でいけました。


539 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 13:42:23 ]
そういえば outer ってキーワードなのな

540 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:34:50 ]
conceptまだー?

541 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:31:03 ]
image.blog.livedoor.jp/warosmania/imgs/0/6/063e2fb7.jpg

542 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:38:53 ]
何やらブラクラ危険と専ブラが教えてくれるのだが

543 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:44:44 ]
>>542
心霊写真と見せかけてしばらく見てると白粉野郎がアップになるやつ。

544 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 16:03:15 ]
しばらくってほど時間が経過しないのがなんだかな
じーーっくりと見させてからやった方がダメージ大きいのに

545 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 16:27:51 ]
専ブラによってはアニgifのサムネイルが最後の1枚になってたりして効果ない
びびったけど



546 名前:デフォルトの名無しさん [2008/06/28(土) 02:31:24 ]
>>541
びびった。だがD関係ねーや。

あるいはこれがまだ見ぬヲルタンの素顔なのか?

547 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 02:58:59 ]
ウォルたんにヒゲはあるのだろうか

548 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 04:10:10 ]
テンプレートって計算完備?

549 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 06:08:29 ]
折りたたむだけ

550 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:30:05 ]
hoge hige hage

551 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:40:23 ]
朝起きたら枕元に美少女死神が立ってて鎌で殺してくんねえかなあ…はぁ…

552 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:45:54 ]
Constraintsって何か意味あるんですか?
static ifで同じことができる気がするんですが

553 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 17:48:19 ]
>>552
分けてかけることに意味があるんじゃない?
よくわからんけど。

554 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:03:45 ]
>>553
うーん、わざわざ構文拡張してまでやることなのかな…
まあよく考えたら将来的な理由かもしれないし、
あんまりこだわらないことにします

555 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:36:32 ]
スクリプト言語ひとつ覚えたんで、次は念願のコンパイル型言語を――と思って
Dを狙ってるんですが、このスレ見る限りやめたほうがいいような気がしてきました。
この言語将来性あるんでしょうか? こんなに利用者にコケにされてる言語はじめてみた。



556 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:41:27 ]
このスレは信者だらけだから、少なくともコケにはされてないだろ。

557 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:43:11 ]
……コケにされてるか? むしろこのスレでは愛されてると思うんだがな。

まあそれはさておき、バイナリ吐く言語使いたいなら素直ににC/C++やった方がいいと思うんだ

558 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:49:54 ]
>555
初のコンパイラ方式をDにするのはやめたほうがいいのではないかと。
CかJavaかC#が良いと思う
Dは、ある程度以上の実力者が戯れるのには最適な言語だと思う

559 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 22:00:03 ]
いろいろできたのう

// 特殊化
template factorial(int n) {
enum factorial = n * factorial!(n - 1);
}
template factorial(int n : 1) {
enum factorial = 1;
}

// constraints
template factorial(int n) if(n != 1) {
enum factorial = n * factorial!(n - 1);
}
template factorial(int n) if(n == 1) {
enum factorial = 1;
}

// static if
template factorial(int n) {
static if(n != 1) enum factorial = n * factorial!(n - 1);
else enum factorial = 1;
}

// CTFE
int factorial(int n) {
if(n != 1) return n * factorial(n - 1);
else return 1;
}

560 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 22:04:41 ]
Java出身者にはテンプレートが魔法に見えるから困る
これだけでチューリング完全とかw

561 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 22:11:52 ]
なんというか、There's more than one way to do itって感じになってきたな…

562 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 00:37:59 ]
もともとそういう志向はなきにしもだったからな
でもテンプレート周りとかconst周りはmore than one wayだけでもないぜ。
コンパイル時に決定可能かどうかという重大な違いがある

563 名前:555 mailto:sage [2008/06/29(日) 00:48:50 ]
色々ありがとうございます。
言語仕様や標準ライブラリにいろいろけちつけるのは愛の鞭だったんですね。
初のコンパイラ型言語ってわけでもないので(Cを一通り。MinGWのWindows SDKにあちこち不備があるのが鬱陶しくなってやめた)
忠告を聞かずにDの世界に飛び込んでみます。

564 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 00:55:09 ]
>不備があるのが鬱陶しくなってやめた
ここがひっかかるw
Dはそんなのの塊のような気がす

565 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 01:02:32 ]
ゲーム作るのでなければwxDを使えばいくらか幸せになるかと



566 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 01:24:57 ]
>>564
> >不備があるのが鬱陶しくなってやめた
> ここがひっかかるw

まああの頃とは一味違うつもりなんで……不備は自分でどうにかできる、といいな。
>>565
GUIツールキットってメモリ喰いであまりいいイメージないんですよね。
せっかくWindows API結構覚えてるんで生で頑張ります。

と、ここまで書いてちょっと調べてみたらwxWidgetsって普通のGUIツールキットとはちょっと違うんですね。これは素敵かも。

567 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 11:58:28 ]
メモリの配置を覚えるためにもやっぱC/C++あたりを使うのがいいだろうな
CはやることやったらすぐC→C++でもいいと思うし

568 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 12:46:39 ]
C++は時間の無駄だと思ってるからやっぱりDで

569 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 12:55:40 ]
Dこそ時間の無駄で終わらなければよいが…って思ってる
いつか仕事で使える日が来ることを期待してるが

570 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:11:16 ]
仕事で使わせてくれる会社に入ればいい

571 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:26:44 ]
Hoge hoge = new Hoge();
SetWindowsLong(win, GWL_USER_DATA, &hoge);

ってかんじでウィンドウにインスタンスをひも付けさせたら
しばらくは使えるんだけど、そのうちインスタンスが
まともにとれなくなるのはやっぱりGCのせい?


572 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:53:34 ]
>>571
yes.
どこかに参照を残しておかないとなくなる。

573 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 14:36:45 ]
カーネルオブジェクトの中にある参照をGCが見つけられるわけがない

574 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 15:06:22 ]
DのGCって、再配置型?

575 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 20:16:29 ]
>>571
そもそもDのクラスは参照型なので、やるとしても
Hoge hoge = new Hoge();
SetWindowsLong(win, GWL_USER_DATA, cast(void*)hoge);
こうじゃないか?
&hogeだとhogeの寿命が来た時点でダメになる気がする。



576 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 21:58:12 ]
>>575
GreenPadのソースみながらウィンドウプロシジャ周り(0x042444c7の)をDでやろうとした時に引っかかったw
冷静になって考えれば簡単なミスなんだが。結構考え込んだ気がする。

577 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 22:25:48 ]
GWL_USER_DATAでぐぐったらこのスレが出た。
9時間弱しか経ってないのにgoogleすごいな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<200KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef