C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part144
https://mevius.5ch.net/test/read.cgi/tech/1563769115/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
C++相談室 part145
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
2019/09/13(金) 17:13:24.60ID:/ygW08Jq805デフォルトの名無しさん
2019/11/02(土) 10:06:09.13ID:smHgTNTv void*からC++クラスのポインタ型にstatic_castってできたっけ、
806デフォルトの名無しさん
2019/11/02(土) 10:12:48.91ID:l25LSbph 出来るよ
多態使いたかったらbase ptrとvoid*の相互変換をする
派生ptrからvoid*に直接変換すると危険
多態使いたかったらbase ptrとvoid*の相互変換をする
派生ptrからvoid*に直接変換すると危険
807デフォルトの名無しさん
2019/11/02(土) 10:18:39.64ID:smHgTNTv808デフォルトの名無しさん
2019/11/02(土) 10:20:03.47ID:dYVngRw/ >>800
だからおまえがな
だからおまえがな
809デフォルトの名無しさん
2019/11/02(土) 10:21:28.65ID:dYVngRw/ static_cast<void*>は最派生クラスにダウンキャストだね
810デフォルトの名無しさん
2019/11/02(土) 10:27:48.65ID:egbBWGD9 >>807
外見維持してることが重要なんであって中身でなにをどうしてようがはどうでもいいがな
外見維持してることが重要なんであって中身でなにをどうしてようがはどうでもいいがな
811デフォルトの名無しさん
2019/11/02(土) 10:28:34.71ID:smHgTNTv やべービルド通るわこれ
うちのコンパイラは壊れてるな…
int g_nSomeValue;
int main()
{
int* p = &g_nSomeValue;
int* q = static_cast<int*>(p);
printf("p=0x%p\n", q);
return 0;
}
うちのコンパイラは壊れてるな…
int g_nSomeValue;
int main()
{
int* p = &g_nSomeValue;
int* q = static_cast<int*>(p);
printf("p=0x%p\n", q);
return 0;
}
812デフォルトの名無しさん
2019/11/02(土) 10:30:01.86ID:smHgTNTv 貼りまつがえた、
誤: int* p = &g_nSomeValue;
正: void* p = &g_nSomeValue;
誤: int* p = &g_nSomeValue;
正: void* p = &g_nSomeValue;
813デフォルトの名無しさん
2019/11/02(土) 10:39:33.14ID:l25LSbph void*は型情報が完全に消えるから、
型が完全に一つだとわかっているならそのままstatic_castすればいい
多態だと派生型からvoid*に直接変換してしまうと、void*から戻す場合に基底ポインタには戻せる保証がない
型が完全に一つだとわかっているならそのままstatic_castすればいい
多態だと派生型からvoid*に直接変換してしまうと、void*から戻す場合に基底ポインタには戻せる保証がない
814デフォルトの名無しさん
2019/11/02(土) 10:39:40.95ID:RcR6NuMm >>802
依存している構造体のサイズやレイアウト変わったらアウトだろ
依存している構造体のサイズやレイアウト変わったらアウトだろ
815デフォルトの名無しさん
2019/11/02(土) 10:45:21.22ID:RcR6NuMm816デフォルトの名無しさん
2019/11/02(土) 10:46:18.05ID:pWYzNK5/ 過去の遺産のCOMなんて使いにくいて横で話ししてるやろ
10年後の環境のことまで気にする必要ないんだよ
ばっさり捨ててその時代にあったものを作るべき
無理に資産転用とか互換性とか気にするからクソが生まれる
10年後の環境のことまで気にする必要ないんだよ
ばっさり捨ててその時代にあったものを作るべき
無理に資産転用とか互換性とか気にするからクソが生まれる
817デフォルトの名無しさん
2019/11/02(土) 10:47:10.74ID:l25LSbph pimplで実装隠したところで、
引数に例えばstd::string使うだけでコンパイラバージョン変えたときの保証は無くなるしなぁ
引数に例えばstd::string使うだけでコンパイラバージョン変えたときの保証は無くなるしなぁ
818デフォルトの名無しさん
2019/11/02(土) 10:56:15.43ID:vl/bFsjF 要するに>>759は知ったかが無理矢理考えたアホストーリーと言うことでいいかな?w
819デフォルトの名無しさん
2019/11/02(土) 10:57:17.10ID:vl/bFsjF820デフォルトの名無しさん
2019/11/02(土) 11:06:42.79ID:smHgTNTv821デフォルトの名無しさん
2019/11/02(土) 11:16:21.46ID:smHgTNTv >pimplだと構造体の実装はライブラリ側に完全隠蔽なのでその観点はおかしい
何が言いたいのかというとライブラリ使用側がライブラリが依存する構造体メンバに直アクセスする前提なら
そんなライブラリはpimplにできんだろとゆーこと
つまりpimpl対非pimplの比較の想定が変
非pimpl条件のライブラリのインターフェース仕様だけ抽象度を下げて議論しても仕方が無い
何が言いたいのかというとライブラリ使用側がライブラリが依存する構造体メンバに直アクセスする前提なら
そんなライブラリはpimplにできんだろとゆーこと
つまりpimpl対非pimplの比較の想定が変
非pimpl条件のライブラリのインターフェース仕様だけ抽象度を下げて議論しても仕方が無い
822デフォルトの名無しさん
2019/11/02(土) 11:16:32.42ID:EX+sUHBj >>816
そんなライブラリ誰が使いたがるんだよ
そんなライブラリ誰が使いたがるんだよ
823デフォルトの名無しさん
2019/11/02(土) 11:23:46.22ID:l25LSbph オープンソースやクローズドでも社内での話だったらソースごと提供すれば終わる話だし
社外提供なら多言語で使えるようにcのAPIを出すのが普通じゃないのか
その上で各言語用のラッパーも提供されるってのがありがちなパターン
社外提供なら多言語で使えるようにcのAPIを出すのが普通じゃないのか
その上で各言語用のラッパーも提供されるってのがありがちなパターン
824デフォルトの名無しさん
2019/11/02(土) 11:37:12.15ID:pWYzNK5/825デフォルトの名無しさん
2019/11/02(土) 11:50:05.18ID:EX+sUHBj いやメンテなり機能追加はしろよ
仕様がらっと変わるのわかってるもんなんて使いたくないわ
作り手も使う側めんどいだろ
仕様がらっと変わるのわかってるもんなんて使いたくないわ
作り手も使う側めんどいだろ
826デフォルトの名無しさん
2019/11/02(土) 12:26:20.48ID:DuRHh2CY D なぜ流行らなかったし
Go 突き抜けてる
Rust ちょっと意識高い系
Nim 有望
JULIA 話にならない
Go 突き抜けてる
Rust ちょっと意識高い系
Nim 有望
JULIA 話にならない
827デフォルトの名無しさん
2019/11/02(土) 12:50:14.99ID:esIitHWU828デフォルトの名無しさん
2019/11/02(土) 12:54:19.41ID:pWYzNK5/829デフォルトの名無しさん
2019/11/02(土) 13:22:43.30ID:esIitHWU830デフォルトの名無しさん
2019/11/02(土) 13:28:52.76ID:pWYzNK5/ >>829
COMの中身詳しくないんだけど一切メンテされてないの?
今までwinは山ほど脆弱性をupdateしてるけど、そういう中にCOM周りの修正とかなかったの?
間違いなくあったと思うんだよね。
COMに限らず現状使えるMS産のもので10年間内部が未修正のものなんて多分存在しないんじゃない?
だから10年後のことだけなんて考慮する必要なくて将来に渡り有益ならどうせメンテされるし一時的なもので将来無益になるなら消え去るんだよ
COMの中身詳しくないんだけど一切メンテされてないの?
今までwinは山ほど脆弱性をupdateしてるけど、そういう中にCOM周りの修正とかなかったの?
間違いなくあったと思うんだよね。
COMに限らず現状使えるMS産のもので10年間内部が未修正のものなんて多分存在しないんじゃない?
だから10年後のことだけなんて考慮する必要なくて将来に渡り有益ならどうせメンテされるし一時的なもので将来無益になるなら消え去るんだよ
831デフォルトの名無しさん
2019/11/02(土) 13:32:28.90ID:pWYzNK5/ >>829
なんか前後で俺の主張がずれてる感じで申し訳ない
なんか前後で俺の主張がずれてる感じで申し訳ない
832デフォルトの名無しさん
2019/11/02(土) 13:52:05.38ID:esIitHWU >>830-831
インターフェースの話とインターフェースの先にあるライブラリとかCOMサーバーの話をごっちゃにしてないか?
インターフェースの話とインターフェースの先にあるライブラリとかCOMサーバーの話をごっちゃにしてないか?
833デフォルトの名無しさん
2019/11/02(土) 14:07:55.01ID:RcR6NuMm >>821
勘違い甚だしい
ライブラリ使用者に無関係で見せたくないからpimplで隠すという話をしてる隠さなかったら無用にincludeが増えるし、最悪そのinclude先の仕様変更で互換がくずれる場合もあると
勘違い甚だしい
ライブラリ使用者に無関係で見せたくないからpimplで隠すという話をしてる隠さなかったら無用にincludeが増えるし、最悪そのinclude先の仕様変更で互換がくずれる場合もあると
834デフォルトの名無しさん
2019/11/02(土) 14:12:10.51ID:RcR6NuMm >>823
そう、それが結局いまだによくも悪くもベストプラクティス
わかってないやつ多いんだよ
いきってc++で自称モダンな設計で作り上げてあとで泣きながらcのインタフェース作るはめになる
たいてい機械的なラッパーではすまないからな
そう、それが結局いまだによくも悪くもベストプラクティス
わかってないやつ多いんだよ
いきってc++で自称モダンな設計で作り上げてあとで泣きながらcのインタフェース作るはめになる
たいてい機械的なラッパーではすまないからな
835デフォルトの名無しさん
2019/11/02(土) 14:34:01.62ID:SXOl8GCi void*的な「ハンドル」を経由して操作するやーつ
C由来のインターフェースは強いな
C由来のインターフェースは強いな
836デフォルトの名無しさん
2019/11/02(土) 14:53:41.66ID:QFHeQDAU837デフォルトの名無しさん
2019/11/02(土) 14:55:12.97ID:QFHeQDAU >>832
そうそう。脆弱性の話はCOMじゃなくてDCOM。
もちろんCOMも脆弱性とは無関係ではないんだけど、
それはC++がバッファーオーバーフローと無関係ではないのと
同じようにCOMの設計自体の問題じゃない
そうそう。脆弱性の話はCOMじゃなくてDCOM。
もちろんCOMも脆弱性とは無関係ではないんだけど、
それはC++がバッファーオーバーフローと無関係ではないのと
同じようにCOMの設計自体の問題じゃない
838デフォルトの名無しさん
2019/11/02(土) 15:00:15.19ID:4213U75y ComPtr使ってる?
839デフォルトの名無しさん
2019/11/02(土) 15:04:46.15ID:i1zx37WV Essential COMの第1章で、C++からいかにしてCOMに至るか書いてあるけど、あの流れすごい好き
840デフォルトの名無しさん
2019/11/02(土) 15:07:11.40ID:QFHeQDAU std::filesystem はようやくできたかって感じだが、環境変数でまたorz
なんでこう、使う道具がまともに作られてないんだろうな
C++はメモリ管理ばっかり気にしてる気がする。
なんでこう、使う道具がまともに作られてないんだろうな
C++はメモリ管理ばっかり気にしてる気がする。
841デフォルトの名無しさん
2019/11/02(土) 15:09:57.95ID:esIitHWU >>836-837
> Excelとか以前に、DirectXやシェル(エクスプローラー)そのものがCOMだから
だからCOMとその先を区別してくれよ
COM自体は単なるインターフェース規約で実装は別
脆弱性とかは実装の不具合だから見つかり次第修正されてる
インターフェース規約も仕様バグとかありうるけどCOM自体の仕様バクは聞いたことない
> Excelとか以前に、DirectXやシェル(エクスプローラー)そのものがCOMだから
だからCOMとその先を区別してくれよ
COM自体は単なるインターフェース規約で実装は別
脆弱性とかは実装の不具合だから見つかり次第修正されてる
インターフェース規約も仕様バグとかありうるけどCOM自体の仕様バクは聞いたことない
842蟻人間 ◆T6xkBnTXz7B0
2019/11/02(土) 15:13:34.66ID:OyXmLdGY _
.:⌒: 、 __ >: : : : : : :. <
|: : : :/´ : : : : : : : : : : : : :. `゙ 、
‐.、/: : : : : : : : : : : : : : : : : : : i
У: : : : : : : : : : : : : : : : : : : : :/ \
/: : : : : : : : : : : : ', : { : : : : : : :} __ \
. j: : ;彡': : : : : : : : : ' : ', : : : : : リ / : : : : : : . . \
: : : : : : : : : : : : : : : }: :ト : : : : ′ /: : : : : : : : : : : ヽ '.
: : : : : : : : : : : : : : :ノ :∧: : : : { / : : : : : : : : : : : : : : v
. i: : : : : : : : : : , ‐< >: :∧: : : :', >‐:'―: : : : : : : : : : : : : : :.
. | : : /⌒y:/ /: : : : : _ヽ: : /: ヽ: : : : : : : : : : : : : : : : : : :|
八: : { ^ {: : : Y´ ∨: : : x ― - . . __: : : : :__, : : : : }
ー′ У: : j {: : : ノ /: : : : : : : ̄: : : : : : イ
〈: : :/^ ー^ / : : : : : : : : : : : : : <
^彡 /: : :ヽ -‐=  ̄ ̄
{: : :ノ
ゞ´
.:⌒: 、 __ >: : : : : : :. <
|: : : :/´ : : : : : : : : : : : : :. `゙ 、
‐.、/: : : : : : : : : : : : : : : : : : : i
У: : : : : : : : : : : : : : : : : : : : :/ \
/: : : : : : : : : : : : ', : { : : : : : : :} __ \
. j: : ;彡': : : : : : : : : ' : ', : : : : : リ / : : : : : : . . \
: : : : : : : : : : : : : : : }: :ト : : : : ′ /: : : : : : : : : : : ヽ '.
: : : : : : : : : : : : : : :ノ :∧: : : : { / : : : : : : : : : : : : : : v
. i: : : : : : : : : : , ‐< >: :∧: : : :', >‐:'―: : : : : : : : : : : : : : :.
. | : : /⌒y:/ /: : : : : _ヽ: : /: ヽ: : : : : : : : : : : : : : : : : : :|
八: : { ^ {: : : Y´ ∨: : : x ― - . . __: : : : :__, : : : : }
ー′ У: : j {: : : ノ /: : : : : : : ̄: : : : : : イ
〈: : :/^ ー^ / : : : : : : : : : : : : : <
^彡 /: : :ヽ -‐=  ̄ ̄
{: : :ノ
ゞ´
843デフォルトの名無しさん
2019/11/02(土) 15:31:17.24ID:QFHeQDAU844デフォルトの名無しさん
2019/11/02(土) 15:36:48.55ID:16zH/LAn >>840
環境変数は昔から標準化されてるだろ。設定は微妙だけどデファクト標準関数があるし。
環境変数は昔から標準化されてるだろ。設定は微妙だけどデファクト標準関数があるし。
845デフォルトの名無しさん
2019/11/02(土) 15:56:49.53ID:QFHeQDAU846デフォルトの名無しさん
2019/11/02(土) 16:32:02.24ID:neC/7x9U847デフォルトの名無しさん
2019/11/02(土) 16:32:29.90ID:neC/7x9U >>845
なぜに一行縛りなの?
なぜに一行縛りなの?
848デフォルトの名無しさん
2019/11/02(土) 16:50:16.72ID:TAka4wsD OpenStack, Terraform でも、クレデンシャルなどの環境変数は、1つのファイルにまとめる
それでプログラム内で、os.environ[ 'OS_PASSWORD' ]
みたいに取得する
直接、設定ファイルに書いて、git に保存するのは禁止!
それでプログラム内で、os.environ[ 'OS_PASSWORD' ]
みたいに取得する
直接、設定ファイルに書いて、git に保存するのは禁止!
849デフォルトの名無しさん
2019/11/02(土) 17:09:24.74ID:orbX83iK850デフォルトの名無しさん
2019/11/02(土) 18:41:30.33ID:QFHeQDAU851デフォルトの名無しさん
2019/11/02(土) 18:44:29.21ID:QFHeQDAU ちなみにさっきオレオレで20行ぐらいの関数を書いて
一行で環境変数を取得できるようにしたよ。
でもこういうのは標準ライブラリで用意してあるべきもの
一行で環境変数を取得できるようにしたよ。
でもこういうのは標準ライブラリで用意してあるべきもの
852デフォルトの名無しさん
2019/11/02(土) 18:44:52.66ID:RcR6NuMm こいつアホだろ
853デフォルトの名無しさん
2019/11/02(土) 18:46:14.06ID:neC/7x9U >>850
短ければ偉いとか思ってる?w
短ければ偉いとか思ってる?w
854デフォルトの名無しさん
2019/11/02(土) 18:48:21.60ID:QFHeQDAU855デフォルトの名無しさん
2019/11/02(土) 19:23:54.18ID:neC/7x9U いや、お前がそう思ってるならいいんじゃね?w
856デフォルトの名無しさん
2019/11/02(土) 20:10:41.91ID:QFHeQDAU ん?反対意見があるんじゃないのか?
ないんだね。
お前がなにか思ってるだけかよw
ないんだね。
お前がなにか思ってるだけかよw
857デフォルトの名無しさん
2019/11/02(土) 20:16:14.52ID:FTVoAoH0 この手のバカでもたった20行で作れるんだろ
やっぱりC++は偉大じゃないか
やっぱりC++は偉大じゃないか
858デフォルトの名無しさん
2019/11/02(土) 20:17:34.65ID:QFHeQDAU 車輪の再発明。ってか他の言語使ったほうがいいよ。
859デフォルトの名無しさん
2019/11/02(土) 20:28:57.58ID:16zH/LAn >>845
だったらはじめから「僕はこうじゃなきゃヤなんだー」って言ってくれないと何も伝わらないぞ
だったらはじめから「僕はこうじゃなきゃヤなんだー」って言ってくれないと何も伝わらないぞ
860デフォルトの名無しさん
2019/11/02(土) 20:32:42.04ID:QFHeQDAU はじめから言ってる
> std::cout << なんとか("PATH");
> のように一行でやる方法教えて
> std::cout << なんとか("PATH");
> のように一行でやる方法教えて
861デフォルトの名無しさん
2019/11/02(土) 20:36:29.98ID:dYVngRw/ > 車輪の再発明
典型的なアイディアキラー! マジ死ねよ
ガタガタくだらねえこと言ってねえで
本能のままにやってみたいことに暴走しなきゃ
何もできちゃ来ねえんだよ
そういう生産物の上にあぐらかいて怠けているゴミ共にわかるわけねえ!
典型的なアイディアキラー! マジ死ねよ
ガタガタくだらねえこと言ってねえで
本能のままにやってみたいことに暴走しなきゃ
何もできちゃ来ねえんだよ
そういう生産物の上にあぐらかいて怠けているゴミ共にわかるわけねえ!
862デフォルトの名無しさん
2019/11/02(土) 20:42:10.52ID:QFHeQDAU std::filesystemができたように、
std:envも作れってだけの話なのにね
何がそんなに気に触ったんだろう?
std:envも作れってだけの話なのにね
何がそんなに気に触ったんだろう?
863デフォルトの名無しさん
2019/11/02(土) 20:49:43.64ID:16zH/LAn864デフォルトの名無しさん
2019/11/02(土) 20:58:09.22ID:wdMk8lAB 一行じゃないとヤダとか条件を後出ししたからじゃね
865デフォルトの名無しさん
2019/11/02(土) 21:01:20.92ID:dYVngRw/ > 何がそんなに気に触ったんだろう?
とぼけてんなよ、はっきり書いてんだろ
車輪の再発明と貴様はほざいた
撤回も修正も今さらいらねえ
とぼけてんなよ、はっきり書いてんだろ
車輪の再発明と貴様はほざいた
撤回も修正も今さらいらねえ
866デフォルトの名無しさん
2019/11/02(土) 21:08:11.55ID:QFHeQDAU >>864
そんな下らないことで(笑)
一行とかそんなの重要なところじゃなく、
stdの名の元でまともなライブラリを作ってくれって話だよ
仮にも「標準」ライブラリなんだからさ
昔ながらのgetenvやその安全版はstd:stringが使われてないし、
std::getenvも、なぜかstd::stringではなくchar*が使われていて
使うとエラーとされるレベルの非推奨関数だし、当然ワイド文字版もないし
使おうと思った人なら、まともじゃないの意味ぐらいわかるはず
あ、使ったことない人が噛み付いてきたのかw
あと環境変数の未定義は正常な状態としてありえるのでエラーではない
細かくてすまんなw 適当な発言は気になるんだよ。
そんな下らないことで(笑)
一行とかそんなの重要なところじゃなく、
stdの名の元でまともなライブラリを作ってくれって話だよ
仮にも「標準」ライブラリなんだからさ
昔ながらのgetenvやその安全版はstd:stringが使われてないし、
std::getenvも、なぜかstd::stringではなくchar*が使われていて
使うとエラーとされるレベルの非推奨関数だし、当然ワイド文字版もないし
使おうと思った人なら、まともじゃないの意味ぐらいわかるはず
あ、使ったことない人が噛み付いてきたのかw
あと環境変数の未定義は正常な状態としてありえるのでエラーではない
細かくてすまんなw 適当な発言は気になるんだよ。
867デフォルトの名無しさん
2019/11/02(土) 21:09:21.56ID:QFHeQDAU868デフォルトの名無しさん
2019/11/02(土) 21:11:47.48ID:RcR6NuMm c++の標準ライブラリにプラットフォーム抽象の機能求めるってのは筋が悪いんだよ
filesystemだって結局はposixをテンプレートの味付けで焼き直した程度でファイルの監視もできないだろ
envとか別に標準で提供されなくても何も困ってない
1行かどうかなんてさらにどうでもいい
あと標準ライブラリが提供する範囲の機能で足りてるアプリ作ってるやつは
c++以外の言語使うことを考えた方がいい
filesystemだって結局はposixをテンプレートの味付けで焼き直した程度でファイルの監視もできないだろ
envとか別に標準で提供されなくても何も困ってない
1行かどうかなんてさらにどうでもいい
あと標準ライブラリが提供する範囲の機能で足りてるアプリ作ってるやつは
c++以外の言語使うことを考えた方がいい
869デフォルトの名無しさん
2019/11/02(土) 21:29:52.49ID:neC/7x9U870デフォルトの名無しさん
2019/11/02(土) 21:36:05.57ID:lCdDFN2K 組み込み系なんてenvどころかfilesystemとかそもそもねぇの普通な環境も多いしね
871デフォルトの名無しさん
2019/11/02(土) 21:56:35.34ID:dYVngRw/ >>867
本能の枯れた人生の搾りかすめ
本能の枯れた人生の搾りかすめ
872デフォルトの名無しさん
2019/11/02(土) 22:00:29.09ID:jnnO2x8F ここは毎回しょうもないことで荒れるな
これだからC++界隈って嫌い
これだからC++界隈って嫌い
873デフォルトの名無しさん
2019/11/02(土) 22:07:02.10ID:lY37zOLC まあもともと広いレンジで使われることを目的とした言語だし
いろんな輩が入ってくるのはしゃーない。
しかしc++11以降は明らかに開発してないクソガキが増えたなという印象はある。
いろんな輩が入ってくるのはしゃーない。
しかしc++11以降は明らかに開発してないクソガキが増えたなという印象はある。
874デフォルトの名無しさん
2019/11/02(土) 22:52:35.22ID:egbBWGD9 ないなら作りゃいいのに
なんのためプログラミングなんだろか
なんのためプログラミングなんだろか
875デフォルトの名無しさん
2019/11/02(土) 22:57:03.69ID:l25LSbph せっかくhas_includeみたいなのも出来たのだから、環境ごとに存在しない場合機能提供されないようなものも標準化進めていったらいいんだよね
876デフォルトの名無しさん
2019/11/02(土) 22:57:09.83ID:oLFNuF1W 2chのゴミスレ=C++界隈
877デフォルトの名無しさん
2019/11/02(土) 23:15:11.30ID:FTVoAoH0 >>876
そこに涌く小バエ
そこに涌く小バエ
878デフォルトの名無しさん
2019/11/02(土) 23:38:30.50ID:dJ3V2vrm879デフォルトの名無しさん
2019/11/03(日) 00:27:38.19ID:wm/wPyZM >>875
一応フリースタンディング処理系っていう分類があるのでそれはもうされてる
一応フリースタンディング処理系っていう分類があるのでそれはもうされてる
>>732
一つ教えてください、pimpl とか何べん読み返しても「利益の源泉」がわからないのですが、一つ一言で言い切っていただけませんか?
一つ教えてください、pimpl とか何べん読み返しても「利益の源泉」がわからないのですが、一つ一言で言い切っていただけませんか?
>>775
>マングリングって知ってるか?
>そもそもC++のクラスライブラリを簡単にリンク
私は Java も ruby も触っていますが、お手軽に java のライブラリを c++ から使いたいと、ふつふつ、と、思っているのです…
>マングリングって知ってるか?
>そもそもC++のクラスライブラリを簡単にリンク
私は Java も ruby も触っていますが、お手軽に java のライブラリを c++ から使いたいと、ふつふつ、と、思っているのです…
882デフォルトの名無しさん
2019/11/04(月) 00:16:08.68ID:J7PIJnTc >>880 (732じゃないけど)
クラス実装の変更に対する再コンパイルの必要性の削減。
これが利益とならない環境では用はない。これが利益となる環境はある。
個人的には同じ目的ならインターフェースクラス+生成関数のほうが手間が少なくて好み。
公開済みのクラス(具象クラス)に後付けでも適用できるのが pimpl の強みじゃないかな。
クラス実装の変更に対する再コンパイルの必要性の削減。
これが利益とならない環境では用はない。これが利益となる環境はある。
個人的には同じ目的ならインターフェースクラス+生成関数のほうが手間が少なくて好み。
公開済みのクラス(具象クラス)に後付けでも適用できるのが pimpl の強みじゃないかな。
883デフォルトの名無しさん
2019/11/04(月) 00:45:00.04ID:sHXph+lc884デフォルトの名無しさん
2019/11/04(月) 00:50:27.63ID:HxncxYCK >>881
お前の老害頭では無理だと思う
お前の老害頭では無理だと思う
885デフォルトの名無しさん
2019/11/04(月) 01:01:50.05ID:qdasM095 コンパイル時にリフレクションできたらC++にはもう何も望まないんだけどな
886デフォルトの名無しさん
2019/11/04(月) 01:16:04.50ID:bOoSbled リフレクションしたいとか実行時にあれだとかこれだとかしたいとか
もっと安全性を高めたいとかいう人はC#にいったらいいとおもうんだが
なぜいかないのか
もっと安全性を高めたいとかいう人はC#にいったらいいとおもうんだが
なぜいかないのか
887デフォルトの名無しさん
2019/11/04(月) 04:20:27.81ID:6RBgtjpd マングリングとかも規格で決めてほしいよね
そうすればクラスのエクスポートなんかも簡単になるのに
そうすればクラスのエクスポートなんかも簡単になるのに
888デフォルトの名無しさん
2019/11/04(月) 06:09:25.96ID:26dKwYrd 動的はともかく静的リフレクションはあって困る場面は無いだろ
冗長な記述や変なマクロを使わずに、enumを文字列化したりしたいだろ
冗長な記述や変なマクロを使わずに、enumを文字列化したりしたいだろ
889デフォルトの名無しさん
2019/11/04(月) 06:17:29.31ID:ktSXuT3K 名前マングリングの方法がコンパイラ毎に違うおかげで
互換性のないオブジェクトファイル同士がリンクされる事故を防げる、って
『More Effective C++』に出てたな。
便利さも欲しいが安全性も保ちたい、という要求のせめぎあいだな。
互換性のないオブジェクトファイル同士がリンクされる事故を防げる、って
『More Effective C++』に出てたな。
便利さも欲しいが安全性も保ちたい、という要求のせめぎあいだな。
890デフォルトの名無しさん
2019/11/04(月) 06:59:32.99ID:1EaGoi2+ 今生き残ってるC++のコンパイラってどのくらい種類あんの
特定ハード向けのもgccの派生なんでしょ?
特定ハード向けのもgccの派生なんでしょ?
891デフォルトの名無しさん
2019/11/04(月) 09:40:11.27ID:sHXph+lc892デフォルトの名無しさん
2019/11/04(月) 10:05:11.25ID:7p81GTJD つーかハンドルで渡して使う時にキャストするって面倒だからさ
privateだからいいでしょとかいう問題じゃない
privateだからいいでしょとかいう問題じゃない
893デフォルトの名無しさん
2019/11/04(月) 12:16:24.53ID:pwba8h1Q 記述の煩雑さはもう諦めるけどインラインPimplでゼロオーバーヘッドにしてほしい
894デフォルトの名無しさん
2019/11/04(月) 12:22:24.34ID:TNJ/Yj6e 煩雑さを許容できるならやれるでしょ
pointerでなくバイト配列にしておいて中でcastするやつ
気を付けないところいろいろあるけど
pointerでなくバイト配列にしておいて中でcastするやつ
気を付けないところいろいろあるけど
895デフォルトの名無しさん
2019/11/04(月) 12:35:35.98ID:jCRIC3rQ オーバーヘッドを気にしている人の大半は、気にする必要のあるものを作っていない
896デフォルトの名無しさん
2019/11/04(月) 12:35:45.49ID:DlV1X8tk 実装をpimplに押し込めて公開インターフェース上の変数メンバの増減を無くすのが肝なんだから
pimplのデリファレンスのオーバーヘッドは避けようがないだろう。
pimplのデリファレンスのオーバーヘッドは避けようがないだろう。
897デフォルトの名無しさん
2019/11/04(月) 12:41:44.84ID:7p81GTJD そもそもprivateな関数宣言をpublicなヘッダに
書かないといけないというC++言語仕様の欠陥
publicヘッダとprivateヘッダの二つに分けて
クラス宣言できればよかった
ちなみにC#ではpartialクラスといって
複数のファイルにまたがってクラスの定義ができる
書かないといけないというC++言語仕様の欠陥
publicヘッダとprivateヘッダの二つに分けて
クラス宣言できればよかった
ちなみにC#ではpartialクラスといって
複数のファイルにまたがってクラスの定義ができる
898デフォルトの名無しさん
2019/11/04(月) 13:33:20.96ID:TNJ/Yj6e899デフォルトの名無しさん
2019/11/04(月) 13:45:03.05ID:7wrIz40y まあ欠陥って言われてもprivateメンバー変数変更されたらインスタンスのサイズ変わったりするから
1) 参照してるソースも含めてリコンパイルする
2) ポインタで持つ(pimpl)
しかないからねぇ
C++的には現状の言語仕様でIDEでprivateは見せないようにもできるとかでいいと思う
1) 参照してるソースも含めてリコンパイルする
2) ポインタで持つ(pimpl)
しかないからねぇ
C++的には現状の言語仕様でIDEでprivateは見せないようにもできるとかでいいと思う
900デフォルトの名無しさん
2019/11/04(月) 13:47:25.16ID:ncwvkXHO >>898
パズルとしてはいいけど真顔で書いてたらちょっと引くわw
パズルとしてはいいけど真顔で書いてたらちょっと引くわw
901デフォルトの名無しさん
2019/11/04(月) 13:59:48.02ID:DlV1X8tk902デフォルトの名無しさん
2019/11/04(月) 14:00:47.43ID:7P/NsyXI 結局低レイヤーを考慮しないでバカが文句言ってるだけで
そんなことに付き合う必要はないんだよ。
そんなことに付き合う必要はないんだよ。
903デフォルトの名無しさん
2019/11/04(月) 14:16:11.73ID:TNJ/Yj6e >>901
バイナリ境界にしたときの拡張性のこと言ってる?
それはまさに配列のサイズでリザーブだね
溢れたら終わり
目的がヘッダー依存を切ることなら必要に応じて配列サイズ増やせばいいだけ
めんどいけどassertかけてあるからミスることはない
あとpimplは中でnewされるのがいやな場合あるからそれを避けられるってのも大きいね
バイナリ境界にしたときの拡張性のこと言ってる?
それはまさに配列のサイズでリザーブだね
溢れたら終わり
目的がヘッダー依存を切ることなら必要に応じて配列サイズ増やせばいいだけ
めんどいけどassertかけてあるからミスることはない
あとpimplは中でnewされるのがいやな場合あるからそれを避けられるってのも大きいね
904デフォルトの名無しさん
2019/11/04(月) 14:34:36.07ID:mRc+a4F8 >>897
(使う側が)、CPerson person[10]; や、new CPerson[10] のように書いたと
すると、C++は高速化のため、CPersonのバイトサイズを定数値として
静的にコンパイルして、スタックや Heapからそれらのオブジェクトの領域を
確保する。
なので、たとえC++でCPersonのprivateメンバがC#のpartialの様に分けて宣言できた
としても、それらを全て合わせた全体のバイトサイズが分からないと静的に処理できない。
故に結局、partialの一部であっても全体のサイズに影響のあるような変更が行われた
場合には、上記の様な形でCPersonを使うプログラムは再コンパイルが必要となる。
(使う側が)、CPerson person[10]; や、new CPerson[10] のように書いたと
すると、C++は高速化のため、CPersonのバイトサイズを定数値として
静的にコンパイルして、スタックや Heapからそれらのオブジェクトの領域を
確保する。
なので、たとえC++でCPersonのprivateメンバがC#のpartialの様に分けて宣言できた
としても、それらを全て合わせた全体のバイトサイズが分からないと静的に処理できない。
故に結局、partialの一部であっても全体のサイズに影響のあるような変更が行われた
場合には、上記の様な形でCPersonを使うプログラムは再コンパイルが必要となる。
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【社会】40代以上のおじさん・おばさんは叩いてオッケーという風潮はなぜ加速したのか [七波羅探題★]
- 自分に自信がない女の子、陽キャ美容室で80cmのエクステを付けた結果wwwwwwwwwwwwwwwwwww [329329848]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【朗報】外務省局長、中国側の要求を断固拒否。「高市さんの答弁は日本政府の立場を変えるものではないし、撤回しない」 [519511584]
- 農林水産省「春頃にはコメ価格落ち着くのでは」新米の取引価格、過去最高を更新。 [256556981]
