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


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

C++相談室 part137



1 名前:デフォルトの名無しさん mailto:sage [2018/07/14(土) 17:53:02.14 ID:FOAGvAbs.net]
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
mevius.5ch.net/test/read.cgi/tech/1509780815/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)

----- テンプレ ここまで -----

VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

477 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 07:53:02.77 ID:hfBYO5dB.net]
えっ?
何か勘違いしてないか?

478 名前:デフォルトの名無しさん [2018/08/01(水) 18:55:57.40 ID:4hR5DucF.net]
やっぱり通になると、明太子ひとつ、辛子抜きで・・・とか注文するんだろな。

479 名前: mailto:sage [2018/08/01(水) 19:05:43.34 ID:6NCuGzpD.net]
>>447
https://www.amazon.co.jp/dp/4774196908
今年になって改訂版が出たらしい、だれかレビュー頼みます

480 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 19:11:49.62 ID:a1G0tkY3.net]
>>462
第2刷買ったっけな。役に立ったと思う。

481 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 19:41:42.72 ID:7TmTR3QV.net]
>>462
板を荒らすのやめろよ

482 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 20:37:51.59 ID:/iJJIMGp.net]
ポインタの件ですが参考になりました。まぁこっちはほぼ初心者で相手はベテランの上司なので何も言えない聞けないってとこですね
stackoverflowとか読んで生ポインタあんま使うなスマポ使えオブジェクト使えるときは使えみたいなこと書いてあるの見るとこれでいいのかなって思いますねええ

483 名前:はちみつ餃子 mailto:sage [2018/08/01(水) 23:13:55.56 ID:oNWxQcbM.net]
std::unique_ptr は実行時の速度ペナルティもほとんどないので、避ける理由はあんまりないよな。
例外がとんだ時のロールバックについても面倒なことを考えなくて良いし。

484 名前:デフォルトの名無しさん mailto:sage [2018/08/01(水) 23:34:41.68 ID:GZaAdjmn.net]
たぶん、Scott Meyers とか「Effective 何々」とか、知らんのだろ

たぶん正常に動作する、過去の資産を持っていて、それをコピーして使う作り方なのかも

現場でよくあるのは、サンプル欲しいと言うと、過去のソースコードを持ってきて、
これは動くから、そのままコピーして使って下さいと言われる

新しい事をしようと思うと、環境構築やらで、動かない部分が出てくるので、非常に面倒

それに過去のソースコードは、あちこちで使われているから、バグが少ないという実績があるけど、
新しく作ったものは、バグ出しが大変。
安定するまで、かなりの期間が必要 <

485 名前:br>
よほどの理由がない限り、新しく作らない
[]
[ここ壊れてます]



486 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 03:53:49.14 ID:iSPNCiYK.net]
>>451
どれか一つで良くね
ほとんど被ってるっしょ
あえて選ぶならアルゴリズムクイックリファレンス

網羅性ってヤツを追及するなら、同じようなもんいくつも買うんじゃなくて自分で言ってるようにテーマに特化したものを買うしかない
名前忘れたけど文字列アルゴリズムのアレとか

487 名前:はちみつ餃子 mailto:sage [2018/08/02(木) 06:10:43.23 ID:ksgx4qMg.net]
>>447
Knuth の 「The Art of Computer Programming」もその条件に当てはまると思う。

488 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 07:12:52.80 ID:NSwKZwuS.net]
圧縮アルゴリズムなんか、本で憶えたんじゃなく
FAXだとかモデムみたいな具体的なブツで憶えたな

その他のアルゴリズムも単行本より雑誌で
憶えたのが多いし

489 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 10:20:23.60 ID:KhTk1OQU.net]
そのあたりのアルゴリズムはCマガで覚えた

490 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 10:41:45.24 ID:zFALVR92.net]
>>468

これ?

高速文字列解析の世界――データ圧縮・全文検索・テキストマイニング (確率と情報の科学) | 岡野原 大輔 |本 | 通販 | Amazon
ttps://www.amazon.co.jp/dp/4000069748

「高速文字列解析の世界」サポートページ - daisuke.okanohara
ttps://sites.google.com/site/daisukeokanohara/iwanami_string_world

491 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 11:27:51.52 ID:KhTk1OQU.net]
そのジャンルは大体の場合は条件固定じゃないからツール類を使ったほうがいい

492 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 17:47:42.68 ID:QC+SfWnq.net]
>>447,451,468
蟻本の参考文献揃えるのがおすすめ

493 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 17:50:02.28 ID:QC+SfWnq.net]
って思って確認したらそんな良くなかったスマン

494 名前: mailto:sage [2018/08/02(木) 19:12:17.99 ID:hFhSdR7O.net]
>>470
文書圧縮について手元に置いていつも参照しているのは
https://www.amazon.co.jp/dp/478983672X/
今は、jpg の本が欲しいと思っていますが、なにかいいのはありますか?

495 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:38:11.37 ID:nAUx6Lke.net]
C++極めたいんだけど、どうすれば極められる?
仕事はJavaScriptが主です
今はアルゴリズムの本読んでるのですが、個人的にはC++ドラフトの間違いを指摘できるレベルになりたいです



496 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:48:55.00 ID:1EegAYN5.net]
そんな事を人に聞いてる様じゃ一生無理

497 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 19:57:10.95 ID:Ro0F3mb9.net]
>>477
oracle Solaris Studio の開発者になるとか
ホワイトスミスに弟子入りするとか
じゃね?

498 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:52:27.89 ID:jf+aoeV/.net]
>>478
いや実際C++使ってる職場少ないし、どうやってレベルを上げればいいのか分からん
オープンソースを読むくらいしか思いつかない
>>479
ジョークはいい

499 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 21:22:49.70 ID:EkY0QbOC.net]
コンパイラ読めないと話にならんのじゃないか?

500 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 21:53:24.64 ID:0KRWeg2T.net]
>>480
職場に何を頼るの?

501 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 22:18:49.50 ID:NSwKZwuS.net]
>>476
jpegが赤に弱いなんてのも
ギョーカイの人とのおつきあいで
ホーソレデ氏になった

502 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 22:24:42.73 ID:Ar8oKNDv.net]
>>480
読んでばかりじゃなくて自発的に自分で実際に書いてみないことには、いつまでたってもたいして身に付かないだろう。
極めたいなら、言語仕様の一つ一つを実際に使ってみて具体的に役立つケースや制限、制約、限界を体感して、メリットデメリットを洗い出すくらいのつもりで試してみたら?

503 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 23:26:26.75 ID:jf+aoeV/.net]
>>482
嫌‥
>>484の言うとおり実践的な立場かな
>>484
それはもちろん分かる

504 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 02:17:39.89 ID:gpdbLiuq.net]
>>485
まずは仕事で使う自作ツールをC++で書くとか
千里の道も一歩から

505 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 02:23:34.66 ID:Ja3muTb1.net]
自作ツールはまず、スクリプト言語でやってみて、速度面などで不満があった時だけC・C++に置き換えるのがいいと思うけどどうなの。
スクリプト言語とコンパイル言語の使い分けを覚える良い機会になる。



506 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 02:28:52.17 ID:gpdbLiuq.net]
>>487
目的が自作ツールを作ることならそれで間違ってないが
C++を極めることが目的みたいよ

507 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 07:41:26.05 ID:jYMqs03L.net]
極めると言うても、次の規格が出たらもう過去の知識だし、
いくら頑張っても到達できないゴールのような気がするなぁ。
規格を作る側に入り込めるなら話は違うかも知れんが。

C++は、自分より後ろにいる人をバカにするのが好きな人も多い感じだけど、
「そんな奴にはならん方がええ」

508 名前:はちみつ餃子 mailto:sage [2018/08/03(金) 08:11:10.53 ID:KKWcqInB.net]
ある程度の言語機能しか使わない範囲でも使い物になるように C++ は設計されてる。
ある程度を学めばその範囲内でも実務に使える。
もちろん深い理解があればプログラムをよりよく構成できるので、
実務に使いながら平行して段階的に学ぶということが出来る。
このことは設計者が著した D&E に書かれてる基礎理念のひとつだ。

地に足の着いた、現実的なものとして設計されてるんだよ。
だから、言語としての C++ だけに偏って学ぶのはお勧めできない。
言語として不格好な部分も現実の中では相応の合理性があったりして、
それを学習するのに適しているのは現実のプログラミングだと思う。

ただ、余談だけど、段階的に学べるようにというのはスタート地点として C を想定しているように思う。
C が当然の基礎知識としてあった時代には
そこからシームレスに C++ を学んでいけるように設計するのは妥当な選択だったかもしれないが、
今の時代には C++ の中の C の部分は色々と足を引っ張ってもいるので
歴史が長いと泥臭い部分も積み重なっていくものだなぁと思いました。 (小並感)

509 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 10:14:53.94 ID:lq/KEYA1.net]
20年近く使ってるけど、ドラフトとか目にしても
「こんな機能来るんや!」ってwktkするだけだな
規格を知ってれば極めてる、みたいな風潮が最近あるけど間違いやで
言語はあくまで道具だから使ってなんぼ

510 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 10:29:03.00 ID:cfhQf2V5.net]
みんな深いレスありがとう
ただ自分はどうしても諦めきれないので、仕事以外の時間は、C++に関するサイトや書籍やコーディングに費やすことになると思う
Pythonは学ぼうとは思ってるけどね

511 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 10:49:41.39 ID:TY6Sib0f.net]
ttps://github.com/python/cpython/tree/master/Python

今ならpythonのソースコードもオマケで学べるよ

512 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 12:16:04.74 ID:cfhQf2V5.net]
>>493
ありがとう
こういうのはいいですね

513 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 15:41:42.81 ID:Ja3muTb1.net]
スクリプト言語には、ハッシュテーブルやディクショナリなどと呼ばれるキーと値の組を保存するコンテナ機能が存在する。
一般に高速とされるC++だが、実は、ハッシュテーブルだけはスクリプト言語の方がアクセス速度が速かった。
ただし、C++におけるstd::mapだけがハッシュテーブルに該当した頃の話。

今は、std::unordered_mapがあるのでスクリプト言語と同等以上の速度でハッシュテーブルにアクセス可能になっている。

514 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 18:32:37.47 ID:j4paKoWq.net]
mapはハッシュテーブルに該当しないだろ。
そういうときは辞書とかマップとか連想配列とかと呼ぶべきだ。

515 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 18:52:42.14 ID:9KGEdKKU.net]
mapは連想コンテナだが



516 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 19:03:27.95 ID:j4paKoWq.net]
ハッシュテーブルじゃない

517 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:13:28.65 ID:B+FOIxCl.net]
クラス設計で悩んでいるんだが、みんなの意見を聞きたい
やりたいのは、いわゆるデザインパターン template methodを使ったクラス設計

class Parent {
public:
void execute() {
method1();
method2();
method3();
}
private:
virtual void method1();
virtual void method2();
virtual void method3();
}

子クラスのChild1, Child2でmethod1(), method2(), method3()をそれぞれオーバーライドして処理を分けている
ここで、Child3を追加しようと思うんだけど、method1()の内容はChild2::method1()と全く同じになる
これをどう実装しようかいろいろ悩んだんだが、どれもピンとこない。
そもそも最初の設計がおかしーんじゃねーの?とかこうしたらよくない?とかここおかしくね?とか意見あったら頼む
一応以下は自分が考えていること

@Child2, Child3の親クラスを抽出して、そっちに共通処理として書く
→実装のために継承関係を作るのはあまりよくない気がする
A別クラス(Utilクラス?)を作ってそっちにまとめる
→メンバ変数とか使ってると少し面倒かな。本質的でない気もする。
BChild3::method1()->Child2::method1()とコンポジション的にする
せっかく横のつながりができないようにしてるのに、ここでできるのはよくない
C親クラスに共通メソッドを作って、Child2::method1()とChild3::method1()はそれを呼ぶ
→しっくりこないけど、妥協点かな・・・
DしゃーないChild2::method1()コピペで!
→これはまあ論外かな、時間が全くないときの最終手段

518 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:20:08.01 ID:cWBuX5k9.net]
Child3をChild2の子にすれば?

519 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:22:51.86 ID:Ja3muTb1.net]
共通処理を継承関係と無縁なtemplate関数にできないか検討してみては?

520 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:26:40.59 ID:Xb0+UQnK.net]
>>500
それは多分なんらか整列の問題でやりたくないんだと推測
俺なら4かな・・・

521 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:28:34.49 ID:Xb0+UQnK.net]
4の改良?として
実装ファイルの無名スコープにvoid method1(const Parent& p)かな

522 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 23:36:56.13 ID:xr+Hum6X.net]
派生させるんじゃなくてメソッドの処理を別クラスにして移譲させるんじゃないの?

523 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:12:06.53 ID:AH7fLvgn.net]
>>499
> 実装のために継承関係を作るのはあまりよくない気がする
と言いつつ
> 親クラスに共通メソッドを作って、Child2::method1()とChild3::method1()はそれを呼ぶ
とか意味わからん
全然関係ないのにたまたま一緒になったと言うなら
> しゃーないChild2::method1()コピペで!
しかないと思うが

524 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:38:11.84 ID:hQAAmMi0.net]
コーディング規約で、引数や戻り

525 名前:値に参照型は使うな。わかりにくくなるから。ポインタで渡してポインタで返せ
ってことになってるんですけどこれ一般的な考え方なんですかね。生ポインタ使いまくりの方がよっぽどわかりにくいと思うんですけど
[]
[ここ壊れてます]



526 名前:デフォルトの名無しさん [2018/08/04(土) 00:53:09.47 ID:CpwGeL+S.net]
そんなことよりメソッドでクラスのインスタンスが変更されない場合
そのメソッドにちゃんとconstつけろよ

引数でクラス使う場合も、そのクラスのインスタンスが変更されない場合
その引数にちゃんとconstつけろよ

わかった?

527 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 00:58:03.49 ID:0clFfLhT.net]
>>506
言ってることがわからなくはないが一般的ではないと思う
むしろ参照のほうが一般的な気がするな

528 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 01:05:30.18 ID:Xh+3QD0k.net]
引数については、読み書きする引数は注意をひくためにポインタ渡しにして、読み取りだけの引数は参照渡しにするといいのでは。
戻り値については、失敗したことを意味するNULLを使えるのでポインタのほうがうれしいかも。

529 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 01:06:58.94 ID:QByQ49xB.net]
>>499
execute が virtual でないってことは
Parentを基底にしてコレクションしなくてもいいってことでOK?

>>501 の言うように template で mixin 的に書いたら こんな感じになったー
https://ideone.com/CcRHnO
ChildがKlassになって兄弟関係がなくなってる

530 名前:デフォルトの名無しさん [2018/08/04(土) 01:12:24.24 ID:CpwGeL+S.net]
戻り値なんか全部intでいい
0未満ならすべて一貫してすべてエラー
失敗がありえないブーリアンだけはかろうじてあり

引数をポインタで渡せないとNULLを渡して処理したい場合の処理ができない
そういうとき困るから全部ポインタで

531 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 05:12:55.60 ID:iUNKVgUH.net]
素人ばっかりかw
「More Effective C++」の項目1 だろ

Effectiveも読んでいない奴が、プログラミングやってるのが不思議。
どの言語でも、Effectiveは、入門書の次に読む本やぞ

参照は、確実にNULL じゃない場合。
また、参照に再代入はしない事

532 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 05:25:27.41 ID:YA1hWK5Y.net]
HRESULTも知らないヒヨッ子がいきってるな

533 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 06:40:25.30 ID:O/qEXyQX.net]
参照に再代入ってどうやんの

534 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 07:29:12.24 ID:o+LfwS0J.net]
cからのコードが多い場合は統一のために参照渡しにしないってのはあるかな。

535 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 07:33:54.06 ID:YA1hWK5Y.net]
extern "C"に参照渡しなんかするかよ



536 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 07:42:44.96 ID:Xh+3QD0k.net]
たかが参照にストレスを感じるようになったら、C/C++プログラマをやめた方がいい。引退時。

537 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 08:00:44.90 ID:mQQzn2Q+.net]
>>506
C++を知らない老害が自分の為に決めた規約
積極的に逆らおう

538 名前:デフォルトの名無しさん [2018/08/04(土) 08:29:49.29 ID:Xh+3QD0k.net]
私見を言わせてもらうと、多様性を受け入れ状況に合わせて柔軟に合わせていくのもプログラマあるいは技術者の重要なスキルなので、
一神教的な偏狭な人は若年性認知症とまで言ってのける気はないがかなり情報処理能力が低くなっているはずなので、プログラミングをやめた方がいい。

539 名前:デフォルトの名無しさん [2018/08/04(土) 09:34:28.56 ID:0uMuTyGR.net]
プログラミングがどうこういうより国語を勉強しろ。

540 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:35:16.17 ID:o+LfwS0J.net]
柔軟なのと規約を決めないのはまた別だけどね。
多様性といって新しい言語使って同じ過ちを繰り返している人を何人も見てると
色々バカバカしくなるってところはある。
老害と同じくらい歴史を見ない若造も有害という現実を見るのも良い。

541 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:50:53.54 ID:2dadGiC9.net]
まあ少なくとも>>506が老害であるのは確か
実務経験が少ない若者が多いのも当たり前

542 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:53:11.49 ID:F7vd0ILk.net]
老害なんて言っている奴、10年後に自分がそう呼ばれるって事気がついてないのかな・・・

543 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:55:58.68 ID:2dadGiC9.net]
老人全てが老害になるわけではない
害があるから老害と呼ばれる

544 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:59:13.29 ID:2dadGiC9.net]
>>521
歴史?

過去発生した問題点や注意点を伝えるのは上司や先輩の役目

言語自体の歴史、CPU自体の歴史なんか
興味があるヤツだけ勉強すれば良い

545 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:02:32.30 ID:F7vd0ILk.net]
数人のグループで開発しているなら、あえてコーディング規約を設けずしても出来るだろうが
100人、1000人規模で開発しているなら、工業製品としての品



546 名前:質管理として必要になるでしょう []
[ここ壊れてます]

547 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:03:35.96 ID:pDxZw3/e.net]
>>525
ぼくがしらないのはまわりがおしえないから
さすがゆとり

548 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:08:29.90 ID:2dadGiC9.net]
ん?
おれは伝える側の人間だが

549 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:11:50.81 ID:2dadGiC9.net]
100人規模1000人規模のソフト開発で
若者に言語の決定権があるってのは
すごい会社だね

550 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:20:39.15 ID:+vznLLf6.net]
おかしくはない

好きにやれ動くブツだけもってこい

551 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:27:14.97 ID:UzBGgsy3.net]
いや別に好きにすればいいとは思うのだが
勝手に自分で選んだ言語固有の問題にぶち当たって
人に泣きつくなっつー馬鹿みたいな話があまりに多いんで。
>>525
まともに聞いてくれれば問題ない。

552 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 10:54:42.16 ID:VXqPvtUW.net]
出来たばかりの最新規格の機能ならともかく
C++98以前からずーっとある言語の基本機能を大した理由もなく縛ってるのは阿呆でしょ
(「大した理由」があるなら縛ってもいいのよ、本当に大した理由ならな)

553 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 11:09:59.74 ID:9+U//wQd.net]
>>460
横だがDLLにstd::stringとかSTLのオブジェクトを渡したり返したりする設計ェ、、、
std::string程度なら現実には動くが、STLの内部動作のバージョン間の整合を誰も保証してくれない以上、
そういう設計をされるともはや誰も動作を保証できなくなる

STLに限らずOpenCVやCRT絡みのオブジェクトでもそう、
というわけでこういうライブラリのバージョンの統一を担保できない状況ではchar[]の登場と相成りぬ、

554 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 11:20:42.46 ID:Xh+3QD0k.net]
char[]を使う関数をDLLにして、その関数をstd::string版関数オーバーロード的なラッパーをヘッダーに記述するでしょ、普通。
というか、std::string専用である必要はなく、template関数にしとけばSTLportだろうかstdだろうかEASTLだろうが対応可能になる。

555 名前:はちみつ餃子 mailto:sage [2018/08/04(土) 11:23:58.97 ID:SzDDeCK/.net]
バイナリでの保証を考えると STL を使いにくいってのは確かにあるよな。
COM のような形式を使えばオブジェクト指向をバイナリレベルで管理することも出来るが、
それはそれで別の規約に縛られてしまうわけで。

どんな規約にするにせよ不満は有るよ。
一貫した規約が無い不満よりは規約に不満を持つ方がマシな世界になりがちなのが現実。



556 名前:デフォルトの名無しさん [2018/08/04(土) 11:33:14.55 ID:CpwGeL+S.net]
そんなもん文字列のポインタ渡せばしまい
頭悪いのって悩む必要がないどーでもいい事で悩むからな

それぞれの完結したモジュールでどのバージョンのSTL使おうが関係ないからな

string ahoをaho.c_str()で渡すだけ

557 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 11:50:08.73 ID:9+U//wQd.net]
>>534
ワカル
それは全く普通の設計でおすなあ、

558 名前:デフォルトの名無しさん [2018/08/04(土) 11:54:01.62 ID:CpwGeL+S.net]
頭悪いシロウトほど可変長の文字列クラスをいちいち使いたがるからな

559 名前:デフォルトの名無しさん [2018/08/04(土) 11:57:27.88 ID:CpwGeL+S.net]
もしかしてvectorとかもいちいち自分で全部ラップしってんの
とにかく頭が悪すぎるわ

560 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 11:59:57.25 ID:9+U//wQd.net]
ここで問題なのは可変長の文字列クラスを使いたがる類の素人なのではなくて、
DLLのcallerとcalleeでSTLやCRTのバージョン相違しているケースを想像できない類の素人なのでは…

561 名前:デフォルトの名無しさん [2018/08/04(土) 12:07:08.58 ID:CpwGeL+S.net]
このスレにいるような知恵遅れがどんな作り方しても
ぜんぜん問題にならない

STL ver baka
void bakabaka(char const* aho_) {
 std::string baka("shine");
 ahoaho1(baka.cstr());
}

STL ver aho つかったdll
void ahoaho1(char const* aho_) {
}

なにが問題になるわけ?
もうね知恵遅れのいうことは意味が分からないわけ

562 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 12:08:24.92 ID:73YctOjT.net]
>>484
極めて同意
仕事だと、過去のしがらみや、コーディングルール等に縛られて、思い通りにできない。
自分で地道に実験してゆくしかない

563 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 12:16:41.91 ID:9+U//wQd.net]
いやほんと
呼び出し元と同じ完結したモジュール内で定義された関数にはconst std::string& ahoやconst std::vector &vecで渡し、
DLLで定義された関数にはaho.c_str()や&(vec[0])で渡す、と区別すればwrapperは要りませんなあ、
いやはや>>541は便利なやり方をいろいろご存知ですなあ、、

564 名前: mailto:sage [2018/08/04(土) 12:54:24.58 ID:Rdsot1y5.net]
>>519
「〜なので、〜なので、○○だ」
読んでとまどいを覚える日本語文ですね

565 名前: mailto:sage [2018/08/04(土) 12:56:26.35 ID:Rdsot1y5.net]
>>532
K&R2 の世界の人にとっては、十分に未知な領域なのでしょう…
私は K&R2 自体がすでに「堕落したもの」と考えております



566 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 13:59:14.93 ID:f+sj1d72.net]
>>506
某エディタにこの宗教にご執心の開発者がいるな

567 名前:デフォルトの名無しさん [2018/08/04(土) 18:05:43.06 ID:Xh+3QD0k.net]
ポリモーフィズム(多態性)を可読性を下げる欠点ではなく、可読性を上げる長所と考えるのがC++プログラマとしての信仰の基本なので、
様々な記述方法を許す多態性を嫌うのなら、C++を棄教せねばならないでしょう。
演算子オーバーロードを耐えられる情報処理能力があるなら、参照渡しにも耐えられるはずで、参照渡しだけ目の敵にするのはただの原理主義ですね。

568 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 18:58:53.47 ID:YA1hWK5Y.net]
原理主義なんて高尚なもんじゃなくただのバカ

569 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 20:01:37.83 ID:5qDWXahz.net]
>>547
なのでなのでは?

570 名前:はちみつ餃子 mailto:sage [2018/08/05(日) 00:20:51.12 ID:Sl8YWqHi.net]
>>547
言葉のニュアンス的には原理主義というより教条主義と言った方がこの場合は近いかも

571 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 05:07:56.69 ID:xG+zmDln.net]
だれかたすけてください。
https://dotup.org/uploda/dotup.org1602882.zip
こういうプロジェクトを作ったんですよ。
一応、ゲームっぽいものですが本質はそこじゃなくて。
えーっと、前方参照の解決がよくわからないので直し方教えてください。
普段小さなコードしか扱ってないのでソース分割あまりしないのでわけがわかりません。
コンパイルが通るにはどうしたらよいでしょうか。

お願いします。

572 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 08:56:46.93 ID:WhsUmrtL.net]
ツッコミどころはいっぱいあるけど
とりあえずGameIssue.hの中でRougeStageの定義が見えてないからincludeしろ

573 名前: mailto:sage [2018/08/05(日) 17:21:41.90 ID:JAQP+wl+.net]
>>506
www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
「変数を参照しているのか逆参照しているのかがいつもわからなくなる、だから必ずポインタを使う。アスタリスクが思い出させてくれるから」

C++ の参照は、呼び出し元の記述では参照として渡しているつもりなのか、実体を渡しているのかは区別できず、
呼び出し先の宣言で、はじめて参照か実体かがわかるんですね

個人的には C# のように、呼び出し側でも参照渡しを明示するのがスマートだと思います
そのコーディング規約は良心的だと思います

574 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 17:44:24.77 ID:kXrZdLCy.net]
>>553
参照渡しを明示、とは具体的にどんな方法でしょう?

575 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 17:48:52.51 ID:3KDX12Zf.net]
ref とかoutとかじゃね?



576 名前: mailto:sage [2018/08/05(日) 17:55:52.90 ID:JAQP+wl+.net]
>>554
https://ideone.com/FMEesh
呼び出し側にもキーワード "ref" を記述します

577 名前:デフォルトの名無しさん mailto:sage [2018/08/05(日) 18:07:51.68 ID:lZNE8En/.net]
ゲーム的にはコレか?

Rog-O-Matic - Wikipedia
https://en.wikipedia.org/wiki/Rog-O-Matic






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

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

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