C++相談室 part165at TECH
C++相談室 part165 - 暇つぶし2ch545:デフォルトの名無しさん
24/11/10 17:48:03.99 cLh8//6O0.net
単にリンクするだけではどっちかのライブラリのスタートアップしか呼ばれないから
呼ばれてない方のライブラリの初期化がされなくてまともに動作しない問題が残ると思う

546:はちみつ餃子
24/11/10 18:18:05.60 R/A45v0+0.net
仮にどうにか辻褄合わせが出来てちゃんと動いたとしても将来の開発環境・実行環境でどうなるか予想しづらいというのもある。

547:デフォルトの名無しさん
24/11/10 18:55:50.75 g8WH2rn90.net
こういう感じの実装を見かけたんだけど、ptrって解放済みの領域を指してないよね?

int *ptr = NULL;
std::map<char, int> m;
m.insert(std::make_pair('a', 30));
{
  std::map<char, int>::iterator itr = m.find('a');
  if (itr != m.end()) ptr = &(itr->second);
  // ここでitrは解放される
}

if (ptr) printf("*ptr = %d\n", *ptr); // 大丈夫?

548:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cd32-bar5)
24/11/10 19:59:53.20 a6nPaG4v0.net
>>547
itr が指してる先は m の一部なのでまだ生きてる。
問題ない。

549:デフォルトの名無しさん
24/11/10 20:31:11.60 g8WH2rn90.net
>>548
あざっす!なるほど、よかった~

550:デフォルトの名無しさん
24/11/11 00:36:44.76 6qsu0cnY0.net
>>545
ヤヴァイやん>>539しても全然OKじゃないやん……

551:デフォルトの名無しさん
24/11/11 00:38:49.39 6qsu0cnY0.net
ただしウィンドーズのDLLの呼び出し場合は>>539に従っていれば問題無いはず……
ランタイムの初期化エントリはDLL毎に_DllMainCRTStartup が用意されてDLL初期化時に呼ばれる

552:デフォルトの名無しさん (ワッチョイ 759b-NX7e)
24/11/11 16:46:00.51 XlNa4SSE0.net
URLリンク(www.openwork.jp)

553:青木康善
24/11/12 22:22:32.82 svwbS+Oga.net
独習C++を図書館で借りました。よく、こんな、難しく、エグい言語が出来ますねみなさん。

554:デフォルトの名無しさん (ワッチョイ 1d1f-hYHe)
24/11/12 22:26:44.98 r67kfyB40.net
他に選択肢がなかったんや😭

あと最近はobjective-cとかいう悪魔合体に比べたらなんでもマシな言語に思えてきてる

555:デフォルトの名無しさん
24/11/13 01:53:29.63 CoujH3FQ0.net
Objective-C++もよろしく

556:はちみつ餃子
24/11/13 02:14:12.02 Gj2zjD3b0.net
>>553
汚いが、必要なものはある。
綺麗に整理されてても必要なものがないよりは良い。

557:デフォルトの名無しさん
24/11/13 03:47:19.43 rKuXlBFV0.net
そーだそーだ
C++は難しいからObject Pascalやろうぜ!

558:デフォルトの名無しさん
24/11/14 07:49:57.71 z8CYzrjO0.net
C++女学院の人々ってまだ読める所ある?
大好きだったんだけど。

559:デフォルトの名無しさん (ワッチョイ a501-3n/g)
24/11/14 12:23:07.88 DkukOutW0.net
>>554
C++と悪魔合体してObjective-C++とかなってるけど自分は実用的に感じた
全部それで書こうとは思わんけど、C++との共存のレベルが高くて鼻血出そうになったわ
OSやその他Apple系APIとのやり取りはObjC++、それ以外のソースはC++のみ、とかも簡単だし

560:デフォルトの名無しさん (アウアウエー Sa13-vkNS)
24/11/14 14:52:24.21 a5xmyjQfa.net
>>553
若い人がCからC++の増築増築で可笑しくなって行った歴史をなぞるのは無意味ではない

>>554-555
Objective-C や Objective-C++ の方がまし


やる気は無いけどObjectPASCALはDelphiだっけ

561:デフォルトの名無しさん
24/11/19 11:41:41.34 1x1cv+pZH.net
演算子のオーバーロードない言語はダメだ

562:デフォルトの名無しさん
24/11/19 11:53:31.53 5+FMYvHmM.net
演算子オーバーロードがもたらす言語仕様の複雑性を理解してたら軽々しくそういうことは言えない

563:デフォルトの名無しさん
24/12/08 01:45:50.04 EhZF4lXKz
5chの管理人がRustマンセー野郎でRustの悪口言ったらBBS規制になっちまった。
それでこっちに書いときます。eigenという行列演算、線形代数ライブラリが
ありますが、これ列主順なんですね。なので、[]演算子のオーバーロードでは
行列Aのi行j列の要素にアクセスするときにA[j][i]という奇妙な順番でないと
いけない。それでeigenでは行列に対してA[i][j]みたいなサポートはしていない。
だから[]ではなく[][]演算子みたいな拡張がほしいと思いました。

564:デフォルトの名無しさん
24/12/08 02:15:01.21 EhZF4lXKz
マトリックスクラスを宣言すると

matrix_<double> a[3][3];

で何の対策もせずに、a[0][1][2][3]=1; みたいなアクセスは問題なくできるんですよ。
サイズ宣言時にa[3][3](3,3);というダサい形に。でもこれはstdsize(3,3);とでもして
おけば解決します。でも、列主順のときにはa[j][i]がネックに。()演算子なら列主順
だろが行主順だろが問題なくオーバーロードで解決できるんですが、A(i,j)の添字が0
から始まるのはfortran使っていた自分には違和感があります。

それでA[i,j]? C言語のA[i][j]の伝統を捨てるんですか? 感性の問題ですけど。

565:デフォルトの名無しさん
24/12/08 17:15:54.70 EhZF4lXKz
なるほど。C#に引っ張られたわけですね。a[i][j]の ][ を , に置き換えるプログラム
を作成すれば大きな影響もなく変換できそうですね。
でも、a[i][j]は残すんですよね?残さないと、ブーイングもしくはC++23もういいわ
になりそう。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch