次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part133
http://mevius.5ch.net/test/read.cgi/tech/1511509970/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part134
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 5fcb-Q2eK)
2018/01/20(土) 09:05:42.21ID:mJKRg6iz02デフォルトの名無しさん (ワッチョイ e3cb-Q2eK)
2018/01/20(土) 09:07:45.45ID:mJKRg6iz0 STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
いつまでこの糞テンプレ張り続けるんだおい
---- テンプレ ここまで ----
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
いつまでこの糞テンプレ張り続けるんだおい
---- テンプレ ここまで ----
3デフォルトの名無しさん (ワッチョイ 3d46-7dS8)
2018/01/20(土) 09:24:34.73ID:i+Y70H5F0 前スレのvectorのsize_tの質問した者だけど
実際gprofでvectorの[]が重い原因になってることを確認してる
次に重い原因がイテレータの比較なんだけど
実際gprofでvectorの[]が重い原因になってることを確認してる
次に重い原因がイテレータの比較なんだけど
4デフォルトの名無しさん (ワッチョイ 23b3-3fO/)
2018/01/20(土) 09:35:10.31ID:CFAgCrzx05デフォルトの名無しさん (ワッチョイ 2334-wln7)
2018/01/20(土) 09:50:30.10ID:AVDgMNZq0 またトンデモな使い方をしているのだろうな
6デフォルトの名無しさん (ワッチョイ 9d23-bNKV)
2018/01/20(土) 11:02:33.41ID:Bd+LbacS0 メモリ帯域が律速になる処理はわりとあるので
大容量のデータを処理してるならおかしくはない
キャッシュ効かないメモリアクセスするコストに比べたら整数の拡張など微々たるもんだ
大容量のデータを処理してるならおかしくはない
キャッシュ効かないメモリアクセスするコストに比べたら整数の拡張など微々たるもんだ
7デフォルトの名無しさん (ワッチョイ e3bd-16v+)
2018/01/20(土) 11:46:34.01ID:slOCvU7H0 >>1乙
↓前スレの続き
std::vector<double> vec((size_t)1000);
...
size_t sz = vec.size();
for (int i = 0; i < (int)sz; ++i) {
cout << i << " " << vec[i] << "\n";
}
の方がiをsize_tにするよりループ命令の部分が軽量化されることにより早いかも試練(x64では気のせい?
およびループ内で他に32 bit演算をやる場合、x64だと全てレジスタ上で賄える可能性が高まるから
速くなるかも試練、
結論: アセンブリコードを確認せよ
↓前スレの続き
std::vector<double> vec((size_t)1000);
...
size_t sz = vec.size();
for (int i = 0; i < (int)sz; ++i) {
cout << i << " " << vec[i] << "\n";
}
の方がiをsize_tにするよりループ命令の部分が軽量化されることにより早いかも試練(x64では気のせい?
およびループ内で他に32 bit演算をやる場合、x64だと全てレジスタ上で賄える可能性が高まるから
速くなるかも試練、
結論: アセンブリコードを確認せよ
8デフォルトの名無しさん (ワッチョイ e3bd-16v+)
2018/01/20(土) 12:06:11.44ID:slOCvU7H0 いやスマン
例が不適切やったわ;
ループ内でstd::coutみたいな重量のある関数呼び出しをしたら
「全てレジスタ上で賄える」とか
「キャッシュが有効活用で劇速化」とかも糞も無いな
例が不適切やったわ;
ループ内でstd::coutみたいな重量のある関数呼び出しをしたら
「全てレジスタ上で賄える」とか
「キャッシュが有効活用で劇速化」とかも糞も無いな
9デフォルトの名無しさん (ワッチョイ 25b3-GP+B)
2018/01/20(土) 12:31:55.30ID:w1mvJepJ0 noexceptってどういうときにつけたらいいですか。
10デフォルトの名無しさん (スップ Sd03-3us9)
2018/01/20(土) 13:45:44.65ID:gdCBjjapd >>3
[ ] が問題なら生ポ使えと書いてるんだけど無視?
[ ] が問題なら生ポ使えと書いてるんだけど無視?
11デフォルトの名無しさん (スップ Sd03-3us9)
2018/01/20(土) 13:51:38.35ID:gdCBjjapd12デフォルトの名無しさん (スップ Sd03-3us9)
2018/01/20(土) 14:00:41.11ID:gdCBjjapd >>3
ん?
プロファイラの確認?
だとしたら[ ] が遅いんじゃなくてメモリの読み込みが実際に遅い可能性があるのでは?
そもそも、
[ ] が問題になるような小さなループで
[ ] の時間を正しく測れるのか?
いずれにしろ、生ポと比較してみるのが一番
ん?
プロファイラの確認?
だとしたら[ ] が遅いんじゃなくてメモリの読み込みが実際に遅い可能性があるのでは?
そもそも、
[ ] が問題になるような小さなループで
[ ] の時間を正しく測れるのか?
いずれにしろ、生ポと比較してみるのが一番
13デフォルトの名無しさん (スップ Sd03-3us9)
2018/01/20(土) 14:02:23.47ID:gdCBjjapd メモリ帯域の問題なら
もっと大きな視野で最適化をしないとな
複数ループをくっつけてメモリアクセスを減らすとか
細切れに処理をしてキャッシュを効かすとか
もっと大きな視野で最適化をしないとな
複数ループをくっつけてメモリアクセスを減らすとか
細切れに処理をしてキャッシュを効かすとか
14デフォルトの名無しさん (ブーイモ MM43-Q2eK)
2018/01/20(土) 14:04:10.50ID:C2bNNCkKM []が問題になるわけ無いだろ。ソースコード見たのかよ。
ナマポで書き直すなんて無意味。抜本的にアルゴリズム見直せ
ナマポで書き直すなんて無意味。抜本的にアルゴリズム見直せ
15デフォルトの名無しさん (スップ Sd03-3us9)
2018/01/20(土) 14:05:12.48ID:gdCBjjapd あ、可能性だけで言えば
signedよりunsignedの方が速い
32bit から 64bit の符号拡張はコストが微妙にかかることもあるが、
ゼロ拡張はなにもしなくて良いから
レジスタの上位32bitは勝手にゼロになる
signedよりunsignedの方が速い
32bit から 64bit の符号拡張はコストが微妙にかかることもあるが、
ゼロ拡張はなにもしなくて良いから
レジスタの上位32bitは勝手にゼロになる
16デフォルトの名無しさん (スップ Sd03-3us9)
2018/01/20(土) 14:07:10.18ID:gdCBjjapd17デフォルトの名無しさん (ワッチョイ 23b3-3fO/)
2018/01/20(土) 14:50:38.90ID:CFAgCrzx018デフォルトの名無しさん (スップ Sd03-3us9)
2018/01/20(土) 14:56:00.07ID:gdCBjjapd19デフォルトの名無しさん (ワッチョイ 3d8a-ajZX)
2018/01/20(土) 19:43:21.88ID:J+aY78FJ0 MOVSXもMOVZXも0クロックでは処理できないと思うんだが
ZXが0クロックで出来るってエビデンスはあるのかな?
https://stat.ameba.jp/user_images/20180105/17/genten-nippon/2b/2b/j/t02200142_0640041414105871600.jpg
ZXが0クロックで出来るってエビデンスはあるのかな?
https://stat.ameba.jp/user_images/20180105/17/genten-nippon/2b/2b/j/t02200142_0640041414105871600.jpg
20デフォルトの名無しさん (ドコグロ MM91-3fO/)
2018/01/20(土) 20:07:30.62ID:aYLVMpQqM 32bitデータをレジスタに書き込んだら上位32bitが0クリアされることを言ってるんでしょ
コスト0って言うのはどうかと思うけど
コスト0って言うのはどうかと思うけど
21デフォルトの名無しさん (ワッチョイ 25b3-GP+B)
2018/01/20(土) 20:30:37.09ID:w1mvJepJ0 質問させてください。
以下のコードで push_back 時にコピーコンストラクタが呼ばれます。
ttps://ideone.com/Zodd94
こちらとしては、下のページにあるように、ムーブコンストラクタが呼ばれることを期待しています。
ttps://qiita.com/_meki/items/90f9815a1e899593daa3
なぜムーブではなくてコピーになるのか、教えて頂けないでしょうか。
以下のコードで push_back 時にコピーコンストラクタが呼ばれます。
ttps://ideone.com/Zodd94
こちらとしては、下のページにあるように、ムーブコンストラクタが呼ばれることを期待しています。
ttps://qiita.com/_meki/items/90f9815a1e899593daa3
なぜムーブではなくてコピーになるのか、教えて頂けないでしょうか。
22デフォルトの名無しさん (ワッチョイ a3a2-GP+B)
2018/01/20(土) 20:43:12.42ID:kYo2uzfm023デフォルトの名無しさん (ワッチョイ 25b3-GP+B)
2018/01/20(土) 20:49:44.91ID:w1mvJepJ0 >>22
ありがとうございます。解決しました。
ありがとうございます。解決しました。
24デフォルトの名無しさん (ワッチョイ 25b3-GP+B)
2018/01/20(土) 21:07:26.00ID:w1mvJepJ0 追加で質問させてください。
コンパイラが自動生成する関数で、noexceptがついているのは
・デストラクタ
・ムーブコンストラクタ
・ムーブアサインメントオペレーター
の3つでよろしいでしょうか。
よろしくお願いします。
コンパイラが自動生成する関数で、noexceptがついているのは
・デストラクタ
・ムーブコンストラクタ
・ムーブアサインメントオペレーター
の3つでよろしいでしょうか。
よろしくお願いします。
25デフォルトの名無しさん (ワッチョイ e3e7-x16F)
2018/01/20(土) 21:11:18.68ID:Z4eZ5+gd0 残り3つもデータメンバと基底クラスの同じものが全部noexceptなら付くよ
26デフォルトの名無しさん (ワッチョイ 25b3-GP+B)
2018/01/20(土) 21:18:07.18ID:w1mvJepJ0 回答ありがとうございます。
データメンバと基底クラスのそれぞれのデフォルトコンストラクタが全て noexcept なら、
noexcept なデフォルトコンストラクタが自動生成される。
コピーコンストラクタ、コピーアサインメントオペレーターも同上
という理解でよろしいでしょうか。
また、その条件が成立しないときは、>>24で挙げた3つということになるのですしょうか。
よろしくお願いいたします。
データメンバと基底クラスのそれぞれのデフォルトコンストラクタが全て noexcept なら、
noexcept なデフォルトコンストラクタが自動生成される。
コピーコンストラクタ、コピーアサインメントオペレーターも同上
という理解でよろしいでしょうか。
また、その条件が成立しないときは、>>24で挙げた3つということになるのですしょうか。
よろしくお願いいたします。
27デフォルトの名無しさん (ワッチョイ 25b3-GP+B)
2018/01/20(土) 21:36:13.58ID:w1mvJepJ0 >>26について自己解決しましたので、質問を取り下げます。
ありがとうございました。
ありがとうございました。
28デフォルトの名無しさん (ブーイモ MMe9-Q2eK)
2018/01/21(日) 11:30:18.34ID:LU9Vj3hRM >>16
noexceptなしに = defaultで宣言した場合はどうなるの?
noexceptなしに = defaultで宣言した場合はどうなるの?
29デフォルトの名無しさん (ブーイモ MMe9-Q2eK)
2018/01/21(日) 11:32:32.53ID:LU9Vj3hRM >>28
>> 25の間違いです
>> 25の間違いです
30デフォルトの名無しさん (ワッチョイ e3e7-x16F)
2018/01/21(日) 13:25:22.34ID:XRSBBZxr0 もちろん宣言通りになる
31デフォルトの名無しさん (ブーイモ MMe9-Q2eK)
2018/01/21(日) 13:32:54.03ID:LU9Vj3hRM >>30
thx
thx
32デフォルトの名無しさん (ワッチョイ 559f-x16F)
2018/01/21(日) 19:49:20.49ID:FwsOgvVZ0 記述上 int* であるが、上書きされた場合に自動的に中身を delete してくれるポインタの入れ物を、
operator= のオーバーロードなしで定義できますか?
ちょっと変な質問なのだけど、native C++なら多分以下コードで出来る。
struct PatHead {
int* ptr;
int* operator=(int* value){
if (ptr) delete [] ptr;
ptr = value;
return value;
}
operator int*(){ return ptr;}
};
void test(){
PatHead ph[10]; // int* ph[10] と同じ記述で通るのがミソ
ph[1] = (int*)1;
int* tgt1 = ph[1];
}
問題はこちらが使っているのはVC++/CLIで、
なぜか value struct では operator= のオーバーロードが出来ず、(C3194)
マネージ配列に直接入るのは value型だけなのでちょっと詰んでいる。
なお ref struct なら出来るのだが、こちらは逆に初期化部分で記述が増えるので、
それなら諦めようかな、って感じ。
というわけで回避策を思いつく人がいればお願いします。
何で値型で禁止されているか分かる人も居ればよろしく。
operator= のオーバーロードなしで定義できますか?
ちょっと変な質問なのだけど、native C++なら多分以下コードで出来る。
struct PatHead {
int* ptr;
int* operator=(int* value){
if (ptr) delete [] ptr;
ptr = value;
return value;
}
operator int*(){ return ptr;}
};
void test(){
PatHead ph[10]; // int* ph[10] と同じ記述で通るのがミソ
ph[1] = (int*)1;
int* tgt1 = ph[1];
}
問題はこちらが使っているのはVC++/CLIで、
なぜか value struct では operator= のオーバーロードが出来ず、(C3194)
マネージ配列に直接入るのは value型だけなのでちょっと詰んでいる。
なお ref struct なら出来るのだが、こちらは逆に初期化部分で記述が増えるので、
それなら諦めようかな、って感じ。
というわけで回避策を思いつく人がいればお願いします。
何で値型で禁止されているか分かる人も居ればよろしく。
33デフォルトの名無しさん (ワッチョイ ae81-MBfL)
2018/01/26(金) 13:51:50.30ID:duEsoqcC0 イテレータでendの一つ前を表すのはありますか。
endからの引き算必須ですか。
endからの引き算必須ですか。
34デフォルトの名無しさん (ワッチョイ ba34-0fOh)
2018/01/26(金) 13:58:16.53ID:SmrT25am0 &back()
35デフォルトの名無しさん (ブーイモ MMaf-nzgF)
2018/01/26(金) 14:00:31.27ID:27cZOHeHM3633 (ワッチョイ ae81-MBfL)
2018/01/26(金) 14:14:09.94ID:duEsoqcC0 サンクスです。できました。
37デフォルトの名無しさん (ワッチョイ 9ae7-fPTX)
2018/01/27(土) 07:12:46.54ID:ZP0gkUPd0 rbeginはちょっとトリッキーな実装になってることがあるから注意
38デフォルトの名無しさん (ワッチョイ daf9-Ddy8)
2018/01/27(土) 11:46:50.10ID:RraDQJG10 実装に依存しないような仕様に沿った使い方をすればいいんでないの?
仕様に合致していない実装ならどうしようもないが。
仕様に合致していない実装ならどうしようもないが。
39デフォルトの名無しさん (アウアウウー Sa77-fQjY)
2018/01/27(土) 19:12:13.06ID:Boft2e8Ea SHA256のハッシュをkeyにしたmapを高速で扱いたいんだが、
keyのoperator <,>それぞれでmemcmpしてて、多分このせいで性能悪くなってる
なんか良い解決策ってないですかね?
Linuxのrbtreeと比較すると100万件あたり150msec程度差がついてました
keyのoperator <,>それぞれでmemcmpしてて、多分このせいで性能悪くなってる
なんか良い解決策ってないですかね?
Linuxのrbtreeと比較すると100万件あたり150msec程度差がついてました
40デフォルトの名無しさん (ワッチョイ aa7e-rgA5)
2018/01/27(土) 19:13:43.71ID:IajdzWB80 simd
41デフォルトの名無しさん (ワッチョイ 6e62-WBz1)
2018/01/27(土) 19:44:42.49ID:MtS5alc90 unordered_mapにsha256の関数渡せばええやん
42デフォルトの名無しさん (ブーイモ MMda-FYQJ)
2018/01/27(土) 20:08:58.78ID:6QrTsC7zM fpga
43デフォルトの名無しさん (ワッチョイ ba34-0fOh)
2018/01/27(土) 22:07:02.09ID:bqR9C45e0 mapじゃなくてハッシュを実装しろとしか
44デフォルトの名無しさん (アウアウウー Sa77-fQjY)
2018/01/27(土) 22:15:03.18ID:Im+FAy1Qa45デフォルトの名無しさん (ワッチョイ 9ae7-fPTX)
2018/01/27(土) 22:53:57.64ID:ZP0gkUPd0 Compareの自作で何がいけなかったのかわからないけど解決おめ
46デフォルトの名無しさん (スップ Sd7a-4fyU)
2018/01/27(土) 23:05:46.83ID:r2gR5oNyd 赤黒木ってスマートポインタを使って実装できますか?
親を弱参照で書いたらわけわかめに
親を弱参照で書いたらわけわかめに
47デフォルトの名無しさん (スプッッ Sd7a-g7kd)
2018/01/28(日) 01:55:54.91ID:B1112Jntd ハッシュをソートかあ
48デフォルトの名無しさん (ワッチョイ 9abd-xSVK)
2018/01/28(日) 03:22:06.75ID:vIDP+sWr0 コピーしたくないオブジェクトへのポインタ(ていうか全体をシリアライズするの可能性も考えたらindexがマジお勧め)の配列おソートすれば良い
そういった実装の詳細はクラスの中に隠すことができる 何のためにC++を使っているのやヽ(`Д´)ノ!!!11!1
そういった実装の詳細はクラスの中に隠すことができる 何のためにC++を使っているのやヽ(`Д´)ノ!!!11!1
49デフォルトの名無しさん (ワッチョイ aee8-7ZJK)
2018/01/28(日) 08:17:39.92ID:abHZXNlp0 >>47
なんかモヤモヤするなそれw
なんかモヤモヤするなそれw
50デフォルトの名無しさん (ブーイモ MMaf-nzgF)
2018/01/28(日) 11:41:38.50ID:/ypN0hd6M >>39
hashは値に対してユニークじゃないけどいいの?
hashは値に対してユニークじゃないけどいいの?
51デフォルトの名無しさん
2018/01/28(日) 14:41:11.23 そりゃハッシュ衝突用のフィールドくらい作ってるだろうよ
質問にないことは心配しなくていいよ
質問にないことは心配しなくていいよ
52デフォルトの名無しさん (ワッチョイ f723-g7kd)
2018/01/28(日) 15:09:59.60ID:RaXbFAH70 心配してるんじゃなくてバカにしてるんだよw
53デフォルトの名無しさん (ワッチョイ bab3-dVd5)
2018/01/28(日) 15:44:58.16ID:C2Jb//yt0 バカにしようとして失敗してるとしか見えないけど w
54デフォルトの名無しさん (ワッチョイ bbb3-rgA5)
2018/01/28(日) 20:33:36.08ID:NzqukFwp0 Impliment.h
class Impliment
{
public: base;
};
Interface.h
class Interface
{
class Impliment
{
public: base;
};
Interface.h
class Interface
{
55デフォルトの名無しさん (ワッチョイ bbb3-rgA5)
2018/01/28(日) 20:42:03.84ID:NzqukFwp0 すいません。途中で書き込んでしまいました。
以下のようなクラスを作ったのですが、
derivedがImp::baseを継承しているため、
インクルードの順番が固定されてしまいます。(Impliment.hが先でないといけない)
こういったクラスは使う人から見て嫌がられるでしょうか。
ご意見をいただけるとありがたいです。
Impliment.h
class Impliment
{
public:
class base {}
};
Interface.h
template<class Imp>
class Interface
{
private:
class derived : public Imp::base {}
}
以下のようなクラスを作ったのですが、
derivedがImp::baseを継承しているため、
インクルードの順番が固定されてしまいます。(Impliment.hが先でないといけない)
こういったクラスは使う人から見て嫌がられるでしょうか。
ご意見をいただけるとありがたいです。
Impliment.h
class Impliment
{
public:
class base {}
};
Interface.h
template<class Imp>
class Interface
{
private:
class derived : public Imp::base {}
}
56はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 966f-rgA5)
2018/01/28(日) 20:56:07.47ID:Xl/BPHGJ0 >>55
「XXの実装とインターフェイスが分かれている」ということをユーザが意識しないといけないのは抽象化の不足だと思う。
分離した形のデザインで開発するのはかまわないけど、ユーザに対してはなるべく隠すのが望ましい。
#include<Implement.h>
#include<Interface.h>
と書いたヘッダファイルを用意しておく程度のことでもだいぶんマシになる。
(インクルードガードはしておくこと)
「XXの実装とインターフェイスが分かれている」ということをユーザが意識しないといけないのは抽象化の不足だと思う。
分離した形のデザインで開発するのはかまわないけど、ユーザに対してはなるべく隠すのが望ましい。
#include<Implement.h>
#include<Interface.h>
と書いたヘッダファイルを用意しておく程度のことでもだいぶんマシになる。
(インクルードガードはしておくこと)
57デフォルトの名無しさん (ワッチョイ f723-g7kd)
2018/01/29(月) 02:50:08.46ID:gQcv+kbG0 >>55
普通は interface.h の冒頭で implement.h をインクルードしておく
普通は interface.h の冒頭で implement.h をインクルードしておく
58デフォルトの名無しさん (ワッチョイ efef-WRop)
2018/01/29(月) 05:39:18.37ID:+mqzfkB+0 >>55
このコードだけならインクルード順が逆でも問題ない。
このコードだけならインクルード順が逆でも問題ない。
59デフォルトの名無しさん (ワッチョイ bbb3-rgA5)
2018/01/30(火) 20:17:26.27ID:fsahOVUj060デフォルトの名無しさん (ワッチョイ 16e7-fPTX)
2018/01/30(火) 21:08:08.01ID:VkcoBYQV0 Implement入れ替えさせたいならユーザーに適当な所で
template Interface<MyImplement>;
って書かせりゃいいだけじゃないの?
template Interface<MyImplement>;
って書かせりゃいいだけじゃないの?
61デフォルトの名無しさん (ワッチョイ ba34-0fOh)
2018/01/30(火) 21:19:19.29ID:Lbh+cCVN0 typename imp::base
62デフォルトの名無しさん (ワッチョイ 9fbd-CNA0)
2018/02/04(日) 11:20:04.76ID:r6E1M8790 質問ですが
「このクラスはバイト列としてコピーできる」ということを明らかにするために
明示的にコピーコンストラクタを書くとして、
どう書けば処理系に依存することなくデフォルトのコピーコンストラクタ以上の性能になることを保証できますか
(もしくは、「このクラスはバイト列としてコピーできる」ということを明示する構文はありますか)
「このクラスはバイト列としてコピーできる」ということを明らかにするために
明示的にコピーコンストラクタを書くとして、
どう書けば処理系に依存することなくデフォルトのコピーコンストラクタ以上の性能になることを保証できますか
(もしくは、「このクラスはバイト列としてコピーできる」ということを明示する構文はありますか)
63片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdbf-vcz1)
2018/02/04(日) 11:26:54.06ID:i7yJvuTcd >>62
MyClass(const MyClass&) = default;
MyClass(const MyClass&) = default;
64はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-wbgk)
2018/02/04(日) 11:36:31.71ID:H9FebDBN0 デフォルトのコピーコンストラクタはメンバのコピーコンストラクタを起動するので、
そのクラス (に属するオブジェクト) 全体がバイト列としてコピーするわけではない。
trivially copyable class の要件を満たすように書けばバイト列としてコピー可能と保証される。
コンストラクタの書き方だけでは保証できない。
そのクラス (に属するオブジェクト) 全体がバイト列としてコピーするわけではない。
trivially copyable class の要件を満たすように書けばバイト列としてコピー可能と保証される。
コンストラクタの書き方だけでは保証できない。
65デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/04(日) 13:04:56.23ID:WecC8o2P0 memcpyするコピコンをユーザー定義すればええやん
66デフォルトの名無しさん (ワッチョイ 9fbd-CNA0)
2018/02/04(日) 13:46:35.82ID:r6E1M879067デフォルトの名無しさん (ワッチョイ 9fbd-CNA0)
2018/02/04(日) 13:47:37.01ID:r6E1M8790 訂正
誤:バイト列としてのコピーが可能でないコード
正:バイト列としてのコピーを不可能にするコード
誤:バイト列としてのコピーが可能でないコード
正:バイト列としてのコピーを不可能にするコード
68デフォルトの名無しさん (ワッチョイ 1f7e-wbgk)
2018/02/04(日) 13:47:46.54ID:HBpG+TPK0 >>62
std::is_trivially_copyable<T>がtrueになるように書いて
https://cpprefjp.github.io/reference/type_traits/is_trivially_copyable.html
トリビアル型とは何かは検索して
std::is_trivially_copyable<T>がtrueになるように書いて
https://cpprefjp.github.io/reference/type_traits/is_trivially_copyable.html
トリビアル型とは何かは検索して
69デフォルトの名無しさん (ワッチョイ 1f7e-wbgk)
2018/02/04(日) 13:52:58.38ID:HBpG+TPK0 >>66
なおさらtype_traitsで条件に合わなければコンパイルを失敗させればよい
なおさらtype_traitsで条件に合わなければコンパイルを失敗させればよい
70デフォルトの名無しさん (ワッチョイ 9fbd-CNA0)
2018/02/04(日) 14:08:05.83ID:r6E1M8790 >>69
おk
おk
71はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-wbgk)
2018/02/04(日) 16:47:05.72ID:H9FebDBN072はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-wbgk)
2018/02/04(日) 17:24:06.38ID:H9FebDBN0 流れをぶった切って質問するんだけど、
配列の一部をとる参照とかって作れない?
実際にはコンパイルが通らないけど、やりたいことはこんな感じ。
int a[3];
int (&b)[2] = static_cast<int (&)[2]>(a);
配列の一部をとる参照とかって作れない?
実際にはコンパイルが通らないけど、やりたいことはこんな感じ。
int a[3];
int (&b)[2] = static_cast<int (&)[2]>(a);
73デフォルトの名無しさん (ワッチョイ 9fa2-wbgk)
2018/02/04(日) 18:06:17.19ID:B+seqFts0 reinterpret_castすれば?
74デフォルトの名無しさん (ワッチョイ 7723-Us3F)
2018/02/04(日) 18:22:52.47ID:HJ1AdVlZ0 ポインタにして剥がせばいい
75デフォルトの名無しさん (ワッチョイ 1f7e-wbgk)
2018/02/04(日) 18:28:31.26ID:HBpG+TPK0 配列型はポインタではないので途中からとかない
76デフォルトの名無しさん (ワッチョイ bfe7-j4Dg)
2018/02/04(日) 18:55:06.41ID:i/oNqC3f0 一応うまく行ったけど規格で保証された挙動かどうかはよくわからない
https://ideone.com/wVzc6b
https://ideone.com/wVzc6b
77デフォルトの名無しさん (ワッチョイ 9fcb-qyJP)
2018/02/04(日) 19:14:07.38ID:NcR26d4z0 でもポインタにしてしまうと困るシチュエーションなんてありうるの?
マクロの中でsizeofしてるとか?
マクロの中でsizeofしてるとか?
78デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/04(日) 20:30:26.18ID:WecC8o2P079デフォルトの名無しさん (ワッチョイ 9fbd-CNA0)
2018/02/05(月) 23:20:37.74ID:y5vbQcAP0 メンバのコピーコンストラクタを起動すべきところをmemcpy()しかしない手製コピーコンストラクタで済ませようとしたら破滅が訪れる
MyClass(const MyClass&) = default; なら勝手にやってくれるのでその心配が無いので安心
MyClass(const MyClass&) = default; なら勝手にやってくれるのでその心配が無いので安心
80デフォルトの名無しさん (ワッチョイ 9f23-Us3F)
2018/02/05(月) 23:28:20.73ID:QTKEhMlZ0 しかしまあ >>68 なんていう便利なモノがあるとは
フラフラこういうスレ読んでるのもためになるなあ
フラフラこういうスレ読んでるのもためになるなあ
81デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/06(火) 07:54:17.35ID:CtmFRYuD082デフォルトの名無しさん (ワッチョイ ff8a-phf3)
2018/02/06(火) 08:05:48.85ID:cp/uvOeq083デフォルトの名無しさん (ワッチョイ 7723-Us3F)
2018/02/06(火) 08:27:38.08ID:rGp9SuaC084デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/06(火) 09:14:20.61ID:CtmFRYuD0 バイト列コピーが = default; なわけねーだろアホ
85デフォルトの名無しさん (ワッチョイ 7723-Us3F)
2018/02/06(火) 11:45:28.85ID:rGp9SuaC086デフォルトの名無しさん (ワッチョイ 7723-Us3F)
2018/02/06(火) 11:48:04.39ID:rGp9SuaC0 そもそも「どうコンストラクタを書けば」ってのを質問してるんで
バイト列コピーでコンストラクタを書けってのは単に>>65の珍解答に過ぎない
バイト列コピーでコンストラクタを書けってのは単に>>65の珍解答に過ぎない
87デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/06(火) 11:51:41.68ID:CtmFRYuD0 すまんが日本語でたのむ
88デフォルトの名無しさん (ワッチョイ 7723-Us3F)
2018/02/06(火) 11:54:37.03ID:rGp9SuaC089デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/06(火) 12:36:57.61ID:CtmFRYuD0 元質問: デフォルトのコピーコンストラクタ以上の性能
おまえ: デフォルトより遅くならないこと
よく読めをそのまま返す
おまえ: デフォルトより遅くならないこと
よく読めをそのまま返す
90デフォルトの名無しさん (ワッチョイ 9fe1-pzKJ)
2018/02/06(火) 12:57:03.34ID:bHMYZ9Vj0 以上っていうのは等しいかまたはそれを越えるという意味だぞ
91デフォルトの名無しさん (ワッチョイ 7723-Us3F)
2018/02/06(火) 14:01:35.47ID:rGp9SuaC0 そもそも memcpy は前者の性能保証も後者の仕様の保証もどちらも満たしてない
仕様が保証されてるなら多分性能的に大丈夫だろうという程度
間違いを認めると死ぬ病気なんだろうからもうこれ以上は言わない。
仕様が保証されてるなら多分性能的に大丈夫だろうという程度
間違いを認めると死ぬ病気なんだろうからもうこれ以上は言わない。
92デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/06(火) 14:38:54.29ID:CtmFRYuD0 バイトコピーでmemcpyより高性能な手段を1つでも例示したらどうなんだ
> 間違いを認めると死ぬ病気なんだろうから
ああ、おまえがか
> 間違いを認めると死ぬ病気なんだろうから
ああ、おまえがか
93デフォルトの名無しさん (ワッチョイ ff8a-uMb5)
2018/02/06(火) 18:18:02.35ID:cp/uvOeq09462 (ワッチョイ 9fbd-CNA0)
2018/02/06(火) 22:02:19.27ID:MckGyr3K0 memcpy()より速いコピー手段Xが仮にあったとして
論理的にmemcpy()で済むケースについてコンパイラが提供する
デフォルトのコピーコンストラクタがコピー手段Xにならない理由がわからん…
個人的には「=default;」と書いたら最高性能なんなら毎回手でmemcpy()とか書きたくないカンジ
論理的にmemcpy()で済むケースについてコンパイラが提供する
デフォルトのコピーコンストラクタがコピー手段Xにならない理由がわからん…
個人的には「=default;」と書いたら最高性能なんなら毎回手でmemcpy()とか書きたくないカンジ
95デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/06(火) 22:06:49.77ID:CtmFRYuD0 >>94
class A {
public:
A() {}
A(A const&) { std::cout << "aho"; }
};
class B {
public:
A a;
B() = default;
};
int main()
{
B b, c = b; //this will call you.
}
class A {
public:
A() {}
A(A const&) { std::cout << "aho"; }
};
class B {
public:
A a;
B() = default;
};
int main()
{
B b, c = b; //this will call you.
}
96デフォルトの名無しさん (ワッチョイ 9fbd-CNA0)
2018/02/06(火) 22:09:42.68ID:MckGyr3K0 >>95は「論理的にmemcpy()で済むケース」では無いからちげう
97デフォルトの名無しさん (ワッチョイ ffd7-wbgk)
2018/02/06(火) 22:29:22.47ID:CtmFRYuD0 だから日本語でたのむって言っただろ
98デフォルトの名無しさん (ワッチョイ 9fbd-CNA0)
2018/02/06(火) 22:29:24.08ID:MckGyr3K0 どうした?
訂正はよ
訂正はよ
99デフォルトの名無しさん (ブーイモ MMcf-9NhG)
2018/02/06(火) 23:07:57.82ID:hdfY5rL3M 間違いを認めて・・・死んだのか?
100デフォルトの名無しさん (ワッチョイ 9fbd-CNA0)
2018/02/06(火) 23:21:41.18ID:MckGyr3K0 仕方ないので漏れが訂正するわ;
ttps://ideone.com/TZnGv4
↑のコードの
(*1)は「=default;」でデフォルトのコピコンの使用を明示
(*2)は手でmemcpy()でコピーするように書いたコピコン
次の条件で試したら(*1)も(*2)も同じコードになったわ
x86-64 gcc 7.2
-O2 -fno-strict-aliasing -std=c++14 -pedantic -Wall -Wextra
こことかで試せるが保存と公開方法がわからんかったのでideoneを使わせてもろうた
ttps://gcc.godbolt.org/
漏れの国語力ではようわからんが、さすがに多分>>84は間違いなんジャマイカ、
ttps://ideone.com/TZnGv4
↑のコードの
(*1)は「=default;」でデフォルトのコピコンの使用を明示
(*2)は手でmemcpy()でコピーするように書いたコピコン
次の条件で試したら(*1)も(*2)も同じコードになったわ
x86-64 gcc 7.2
-O2 -fno-strict-aliasing -std=c++14 -pedantic -Wall -Wextra
こことかで試せるが保存と公開方法がわからんかったのでideoneを使わせてもろうた
ttps://gcc.godbolt.org/
漏れの国語力ではようわからんが、さすがに多分>>84は間違いなんジャマイカ、
101デフォルトの名無しさん (ワッチョイ 9f34-FPX7)
2018/02/06(火) 23:34:18.80ID:Ur4dB7lv0 Cから来た連中ってどうしてmemcpyやmemset使いたがるんだろうな
102はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-wbgk)
2018/02/07(水) 04:09:18.59ID:OAPGz/K+0 >>76
reinterpret_cast でなければ通らないときはだいたい駄目なときやわ。
reinterpret_cast でなければ通らないときはだいたい駄目なときやわ。
103はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-wbgk)
2018/02/07(水) 04:22:37.75ID:OAPGz/K+0104デフォルトの名無しさん (ブーイモ MMcf-EKSC)
2018/02/07(水) 05:00:09.29ID:1UF8v8gcM 開始アドレス、終了アドレス、サイズが64bit等で割り切れれば
バイトコピーより早いコピーはあるだろうね
バイトコピーより早いコピーはあるだろうね
105デフォルトの名無しさん
2018/02/07(水) 07:27:28.65 頭のいいコンパイラなら勝手にベクトル処理とかしてくれるんじゃないの?
知らんけど
知らんけど
106デフォルトの名無しさん (ワッチョイ 57b3-wbgk)
2018/02/07(水) 22:28:51.20ID:MTpdY7NJ0 "!"!"!MOHYO!"!"!"2"
1.[[[HUn≒MUL=POSI≠MAHO+Set*HUGE=SAGE=LOGE=NOISIA=0≒1]]]
2-[[[[[[[E=RAT%2^10%SPELAn!%]&!TOWA&!PEG#!NOLNOL8!#!HYAGO!2#]1*2=1]U]S]0]O]!#PAL!
3--->PAGODOL7&!@17,2222734.15&[[[%%RENRAK6,9,99"^10"]#$11.2%}]KAIJ]{
41.2SSS = RALQI2.β{{{RA4,0,238^97,1,$.S.L.E.I.L."Q5352.15Q"JOL"5*3>>>41.3q}}}>1.2<0
.3φTALHOSI"0">>>105.10<1.235<1.2>51≠52===55.632>V="E=0.835"of"1.32","632",0.683,1.end
{
1.[[[HUn≒MUL=POSI≠MAHO+Set*HUGE=SAGE=LOGE=NOISIA=0≒1]]]
2-[[[[[[[E=RAT%2^10%SPELAn!%]&!TOWA&!PEG#!NOLNOL8!#!HYAGO!2#]1*2=1]U]S]0]O]!#PAL!
3--->PAGODOL7&!@17,2222734.15&[[[%%RENRAK6,9,99"^10"]#$11.2%}]KAIJ]{
41.2SSS = RALQI2.β{{{RA4,0,238^97,1,$.S.L.E.I.L."Q5352.15Q"JOL"5*3>>>41.3q}}}>1.2<0
.3φTALHOSI"0">>>105.10<1.235<1.2>51≠52===55.632>V="E=0.835"of"1.32","632",0.683,1.end
{
107片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd62-d/x4)
2018/02/10(土) 19:52:35.19ID:x9I4Wn6Pd C++では、
int i;
for (i = 0; i < 9; ++i) { ... }
が、
for (int i = 0; i < 9; ++i) { ... }
って書けるのは知っているだろう。( )の中で、変数を宣言できる。
だが、ifやwhileの( )の中で、変数を宣言できることを知らない人は多い。
int i;
for (i = 0; i < 9; ++i) { ... }
が、
for (int i = 0; i < 9; ++i) { ... }
って書けるのは知っているだろう。( )の中で、変数を宣言できる。
だが、ifやwhileの( )の中で、変数を宣言できることを知らない人は多い。
108デフォルトの名無しさん (ワッチョイ 99b3-BC1W)
2018/02/11(日) 04:31:12.99ID:9irhhPDg0 C++17では
if ( auto v = n; conditions ) {
...
}
が可能になるし、これからは広がってくれるかのう
if ( auto v = n; conditions ) {
...
}
が可能になるし、これからは広がってくれるかのう
109デフォルトの名無しさん (ワッチョイ 2ee8-8oIi)
2018/02/11(日) 06:11:03.22ID:l3GMmVaq0 >>108
これホント待ち遠しい
これホント待ち遠しい
110デフォルトの名無しさん (ワッチョイ 4539-102K)
2018/02/11(日) 17:00:15.07ID:RGzNlubj0 それほど待ち遠しいか?
111デフォルトの名無しさん (ワッチョイ 99b3-7Au1)
2018/02/11(日) 17:27:44.93ID:QA9xO9uU0 待ち遠しくない
112デフォルトの名無しさん (ドコグロ MM0a-/0XS)
2018/02/11(日) 17:34:07.64ID:A61Ds/EIM for( ) の制御変数はそのループでしか使わないことが多いから意味あったけど、if( ) でそんなケースはまれだしなぁ
あれば使うけど待ち遠しいって言うほどじゃない気がする
あれば使うけど待ち遠しいって言うほどじゃない気がする
114デフォルトの名無しさん (ワッチョイ ed9b-gPIt)
2018/02/11(日) 17:40:12.67ID:KWDwqk940 一瞬意図が分からなかったが
()の中が;で区切れるという話?
()の中が;で区切れるという話?
115デフォルトの名無しさん (ブーイモ MMb6-ZT4h)
2018/02/11(日) 17:41:52.24ID:rD0gl3AiM dynamic_castとの組み合わせで使うとかどうよ
116デフォルトの名無しさん (ワッチョイ c27c-jA6l)
2018/02/11(日) 19:11:10.58ID:av7bQMHG0 結構あると思うけどね
if(DWORD err = GetLastError(); err != NO_ERROR)
この場合NO_ERRORが0だって分かってるから
if(DWORD err = GetLastError())
で済むから無意味だけど
if(DWORD err = GetLastError(); err != NO_ERROR)
この場合NO_ERRORが0だって分かってるから
if(DWORD err = GetLastError())
で済むから無意味だけど
117デフォルトの名無しさん (ワッチョイ 22f9-YiuZ)
2018/02/11(日) 19:17:28.82ID:yo2OB3cP0 >>116
前者の方が意図が明確だし意味はあると思う
前者の方が意図が明確だし意味はあると思う
118デフォルトの名無しさん
2018/02/11(日) 20:06:43.52 >>116
>if(DWORD err = GetLastError(); err != NO_ERROR)
普通こうやろ
if((DWORD err = GetLastError()) != NO_ERROR)
変数宣言は少しは意味あるかもしれんが(Perlと同じことができるってこと)
複文書けるのは特にメリット感じないわ
>if(DWORD err = GetLastError(); err != NO_ERROR)
普通こうやろ
if((DWORD err = GetLastError()) != NO_ERROR)
変数宣言は少しは意味あるかもしれんが(Perlと同じことができるってこと)
複文書けるのは特にメリット感じないわ
119デフォルトの名無しさん (ワッチョイ 86e7-zMUp)
2018/02/11(日) 20:41:29.80ID:Ag9E1Urq0 それ通らんよ
こうだろ
DWORD err;
if((err = GetLastError()) != NO_ERROR)
if内でしか使わないerrが外部に漏れてるのがよろしくないってこと
こうだろ
DWORD err;
if((err = GetLastError()) != NO_ERROR)
if内でしか使わないerrが外部に漏れてるのがよろしくないってこと
120デフォルトの名無しさん
2018/02/11(日) 20:56:03.30121デフォルトの名無しさん (ワッチョイ d27e-jA6l)
2018/02/11(日) 22:10:23.49ID:p+z832PL0 if(init ; expr)だと初期化と式が関連していなくてもいいので>>120とは違う構文になる
だからこんなのでもよい
if(int err = GetLastError(); hoge.aho())
lock_guardもしておける
if(std::lock_guard<std::mutex> lock(m); flag)
構造化束縛も使える
if(auto [a, b, c] = f(); b > c){ std::cout << "b > c" << std::endl; }
だからこんなのでもよい
if(int err = GetLastError(); hoge.aho())
lock_guardもしておける
if(std::lock_guard<std::mutex> lock(m); flag)
構造化束縛も使える
if(auto [a, b, c] = f(); b > c){ std::cout << "b > c" << std::endl; }
122デフォルトの名無しさん (ワッチョイ ddc3-saCW)
2018/02/12(月) 12:22:30.52ID:sATukCOa0 Cでは名前空間っていうのをすごい扱っていた気がするんだけどC++は名前空間扱うことってないの?
一つのアプリケーションも完成させたことがないど素人の質問ですまんが
一つのアプリケーションも完成させたことがないど素人の質問ですまんが
123デフォルトの名無しさん (ワッチョイ 62cb-ZT4h)
2018/02/12(月) 12:43:48.54ID:qekpeHDJ0 >>122
まずは"C"の入門書を読んで、何を見間違えたのかはっきりさせてからにしようか。
まずは"C"の入門書を読んで、何を見間違えたのかはっきりさせてからにしようか。
124デフォルトの名無しさん (ワッチョイ e1eb-IGFW)
2018/02/12(月) 14:08:57.84ID:sGdsmrZD0 初心者スレに池
125デフォルトの名無しさん (ワッチョイ 319f-R9JW)
2018/02/12(月) 20:44:41.93ID:gfcybQxo0 >>122
気のせい。
気のせい。
126デフォルトの名無しさん (ワッチョイ 6e8a-9Kvu)
2018/02/13(火) 00:10:36.10ID:YGwN9DGw0 >>122
Cにnamespaceは無いだろ
Cにnamespaceは無いだろ
127はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 066f-jA6l)
2018/02/13(火) 17:30:20.31ID:tUR5ZBgZ0 構造体タグと型名の名前空間が分かれているといったような意味での名前空間は C に有るが
C++ では構造体タグはそのまま型名としても使えるし、そういう意味での名前空間の話かな?
C++ では構造体タグはそのまま型名としても使えるし、そういう意味での名前空間の話かな?
128デフォルトの名無しさん (ワッチョイ c26e-jA6l)
2018/02/13(火) 17:45:08.06ID:a1RYP/Gm0 こんな名前空間もあるね
int x;
int main(void)
{
x = 1;
int x;
x = 2;
{
int x;
x = 3;
}
return 0;
}
int x;
int main(void)
{
x = 1;
int x;
x = 2;
{
int x;
x = 3;
}
return 0;
}
129デフォルトの名無しさん (ブーイモ MM6d-ZT4h)
2018/02/13(火) 17:55:17.58ID:Xr6xvVy+M それはスコープでは
130デフォルトの名無しさん (ワッチョイ c26e-jA6l)
2018/02/13(火) 18:15:03.36ID:a1RYP/Gm0 変数だよ
代入でもあるね
代入でもあるね
131デフォルトの名無しさん (ワッチョイ d27e-jA6l)
2018/02/13(火) 20:09:02.02ID:NNOtJgpO0 謎すぎワロタがそこから上のスコープのxを参照してくれ
132デフォルトの名無しさん (ラクッペ MM61-cyyJ)
2018/02/13(火) 20:19:22.41ID:Za/EZbH7M ブロックって言ってる
133デフォルトの名無しさん (ワッチョイ c26e-jA6l)
2018/02/13(火) 21:49:01.90ID:a1RYP/Gm0 アホばっかり
がっかり
がっかり
134デフォルトの名無しさん (ワッチョイ 9f23-TT3E)
2018/02/15(木) 12:08:37.28ID:Sgd3BwBT0 std::mapのように文字列や構造体をキーにした高速アクセスができて、
要素の数が一定数を超えたらLRU形式で勝手に削除してくれる、
キャッシュのような機能を実装したいのだけど、
C++でそのような仕組みを作れるクラスはないですか?
要素の数が一定数を超えたらLRU形式で勝手に削除してくれる、
キャッシュのような機能を実装したいのだけど、
C++でそのような仕組みを作れるクラスはないですか?
135デフォルトの名無しさん (ワッチョイ 378a-TkRA)
2018/02/15(木) 17:00:44.45ID:GbCJk+7h0 自分で実装するならどうにでもなるだろ
そのための道具は全て標準で揃っている
そのための道具は全て標準で揃っている
136デフォルトの名無しさん (ワッチョイ ff8a-NmL4)
2018/02/15(木) 18:15:51.96ID:6url8MQd0 バックグラウンドならスレッド使うしかないんじゃないかな
137デフォルトの名無しさん (ブーイモ MMbf-4Nx+)
2018/02/15(木) 19:13:27.39ID:CSnzpiZpM C++のプログラマーって性格ねじ曲がってるなあ
初めてGo応援したくなったわ
初めてGo応援したくなったわ
138デフォルトの名無しさん (ワッチョイ 9f60-qi38)
2018/02/15(木) 19:34:35.63ID:95vLe5Bi0 >>137
どんな点が、性格悪い、と思わせるのですか?
どんな点が、性格悪い、と思わせるのですか?
139デフォルトの名無しさん (ワッチョイ d7eb-1VRC)
2018/02/15(木) 20:03:21.73ID:qihnyYvs0 それだよそれ
140デフォルトの名無しさん (ワッチョイ 9fbd-RFe/)
2018/02/15(木) 21:14:35.68ID:MoAPifjS0 C++は多分チューリング完全だと思う
141デフォルトの名無しさん (ドコグロ MMdf-dLOu)
2018/02/15(木) 21:20:32.50ID:6nYos/bmM >>136
要素数が閾値を超えるのは要素が追加される時だからその時に古い奴を削除すりゃいいだけじゃね?
要素数が閾値を超えるのは要素が追加される時だからその時に古い奴を削除すりゃいいだけじゃね?
142デフォルトの名無しさん (ブーイモ MM1b-goL+)
2018/02/15(木) 23:50:52.95ID:fG1U9Z3qM >>135
簡単で良いのでサンプルコード書いてもらえませんか?
簡単で良いのでサンプルコード書いてもらえませんか?
143デフォルトの名無しさん (ワッチョイ 9fa8-yZIn)
2018/02/16(金) 00:43:14.82ID:uaG+5sVQ0 >>135じゃないけどシンプルにいくなら
{
map<key,value> data; // 本来のデータ
map<key,list<key>::iterator> lruindex; //
list<key> lrulist; // LRUリスト
... // mapと同じインターフェイス
}
みたいなクラスで要素の追加・削除・参照とかの時にLRUリスト見て処理すればいい
{
map<key,value> data; // 本来のデータ
map<key,list<key>::iterator> lruindex; //
list<key> lrulist; // LRUリスト
... // mapと同じインターフェイス
}
みたいなクラスで要素の追加・削除・参照とかの時にLRUリスト見て処理すればいい
144デフォルトの名無しさん (ワッチョイ ff80-Pey1)
2018/02/16(金) 03:16:29.76ID:DpsRPWWQ0 辞書・線形リスト・2分木を、組み合わせる。Ruby で書くと、
class LRU_hash
def initialize (max_size = 3)
# ary は、hash に追加・アクセスした順
@hash = {}; @ary = []
@max_size = max_size
end
def push (key)
if @hash.has_key? key
# 一旦、要素を削除してから、最後尾に追加しなおす
@ary.delete key
else
if @max_size == @hash.size
# 先頭要素を削除してから、最後尾に追加する
@hash.delete(@ary.shift)
end
@hash[key] = true
end
@ary.push key
end
def print_buf
puts @ary.join ', '
end
end
ary = ["あ", "a", "あ", "い", "b", "あ", "c"]
hash = LRU_hash.new 4
ary.map { |key| hash.push key }
hash.print_buf #=> い, b, あ, c
class LRU_hash
def initialize (max_size = 3)
# ary は、hash に追加・アクセスした順
@hash = {}; @ary = []
@max_size = max_size
end
def push (key)
if @hash.has_key? key
# 一旦、要素を削除してから、最後尾に追加しなおす
@ary.delete key
else
if @max_size == @hash.size
# 先頭要素を削除してから、最後尾に追加する
@hash.delete(@ary.shift)
end
@hash[key] = true
end
@ary.push key
end
def print_buf
puts @ary.join ', '
end
end
ary = ["あ", "a", "あ", "い", "b", "あ", "c"]
hash = LRU_hash.new 4
ary.map { |key| hash.push key }
hash.print_buf #=> い, b, あ, c
145デフォルトの名無しさん
2018/02/16(金) 04:31:51.17146デフォルトの名無しさん (ワッチョイ d7e3-2H/C)
2018/02/16(金) 06:27:04.53ID:HICjIKnm0 プログラムを作っていて困っています。
プログラム動作環境、windows 7 x86_x64
プロセスをExplorerを親として、
起動したプロセスにファイルの存在するディレクトリを作業ディレクトリとして
割り当てたい。
ただし、プロセスへのアタッチによる変更は禁止とする。
ようするにファイルをダブルクリックして起動するのと同じ状況を再現したいのです。
例
C:\hoge\fuga.exe
[現状]
Explorer C:\hoge\fuga.exe
親
explorer.exe
カレントディレクトリ
C:\Windows\System32\
[理想]
Explorer C:\hoge\fuga.exe
親
explorer.exe
カレントディレクトリ
C:\hoge\
プログラム動作環境、windows 7 x86_x64
プロセスをExplorerを親として、
起動したプロセスにファイルの存在するディレクトリを作業ディレクトリとして
割り当てたい。
ただし、プロセスへのアタッチによる変更は禁止とする。
ようするにファイルをダブルクリックして起動するのと同じ状況を再現したいのです。
例
C:\hoge\fuga.exe
[現状]
Explorer C:\hoge\fuga.exe
親
explorer.exe
カレントディレクトリ
C:\Windows\System32\
[理想]
Explorer C:\hoge\fuga.exe
親
explorer.exe
カレントディレクトリ
C:\hoge\
147144 (ワッチョイ ff80-Pey1)
2018/02/16(金) 07:56:00.35ID:DpsRPWWQ0148デフォルトの名無しさん (ワッチョイ 57fc-T3WU)
2018/02/16(金) 08:03:01.53ID:TOIQut300 >>146
explorer.exeへのショートカットを作ってプロパティで作業ディレクトリを指定するか、
COMでIShellLink::SetWorkingDirectoryを使って同じことをするあたりか?
explorer.exeへのショートカットを作ってプロパティで作業ディレクトリを指定するか、
COMでIShellLink::SetWorkingDirectoryを使って同じことをするあたりか?
149134 (ワッチョイ 9f23-TT3E)
2018/02/16(金) 09:56:21.20ID:+b2iJMK40 みなさんありがとうございます。
std::mapにLRUや最大要素数の仕組みを持たせた派生クラスでも
無いかと思ったのですが、標準ではやっぱり無いですか。
>>143のように、std::mapをメンバの一つに持たせた独自クラスを
一から作っていくことになるんですかね。
std::mapにLRUや最大要素数の仕組みを持たせた派生クラスでも
無いかと思ったのですが、標準ではやっぱり無いですか。
>>143のように、std::mapをメンバの一つに持たせた独自クラスを
一から作っていくことになるんですかね。
150デフォルトの名無しさん (ワッチョイ 9f12-pjg9)
2018/02/16(金) 10:11:55.71ID:JoalkiMd0 amazonランキングの謎を解く とか言う本でmove-to-frontを見た
本の紹介「Amazonランキングの謎を解く」
http://www.kenkyuu.net/whatsnew/2011/08/book2011-08-01.html
>「move-to-front規則」(最後に売れた順に並べる、つまり、注文のたびに1位にジャンプする)
Move To Front - Wikipedia
https://ja.wikipedia.org/wiki/Move_To_Front
本の紹介「Amazonランキングの謎を解く」
http://www.kenkyuu.net/whatsnew/2011/08/book2011-08-01.html
>「move-to-front規則」(最後に売れた順に並べる、つまり、注文のたびに1位にジャンプする)
Move To Front - Wikipedia
https://ja.wikipedia.org/wiki/Move_To_Front
151デフォルトの名無しさん (ワッチョイ 57fc-T3WU)
2018/02/16(金) 10:54:10.09ID:TOIQut300 ageだね
152デフォルトの名無しさん (ワッチョイ 378a-TkRA)
2018/02/16(金) 14:25:37.67ID:UjPhOEUu0153デフォルトの名無しさん (ブーイモ MM3b-mhGK)
2018/02/16(金) 18:05:58.99ID:GGXfeEqkM 江添さんのC++17本予約しようかな
154デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/16(金) 18:26:06.12ID:waI0am5S0 予約しなくても売れ残るからいつでも買える
155デフォルトの名無しさん (アウアウカー Sa6b-s4hu)
2018/02/16(金) 20:04:35.13ID:1Lr9lxEpa C++を勉強しようと思ってる者ですが書籍を探しております。Cはある程度書けるのでそれを前提とした書籍が欲しいです
156デフォルトの名無しさん (ワッチョイ bf0e-qi38)
2018/02/16(金) 20:33:50.33ID:Rc+MuzY40 C++ クイック入門&リファレンス
プログラミング言語C++ 第4版
プログラミング言語C++ 第4版
157デフォルトの名無しさん (ワッチョイ 9f60-qi38)
2018/02/16(金) 20:36:34.10ID:9b60nRDg0 >>155
C++11 以前だが accelerated c++, ここでフォローするよ
C++11 以前だが accelerated c++, ここでフォローするよ
158デフォルトの名無しさん (ワッチョイ 57fc-T3WU)
2018/02/16(金) 20:37:11.23ID:TOIQut300 禿4は俺も推奨する
C++11の良本だ
C++11の良本だ
159デフォルトの名無しさん (アウアウカー Sa6b-s4hu)
2018/02/16(金) 21:09:12.34ID:+EaaPhKWa めっちゃ高いけどその価値あるのね
160デフォルトの名無しさん (ブーイモ MMbf-zxnT)
2018/02/16(金) 21:46:03.21ID:5AmFsIq1M161デフォルトの名無しさん (ワッチョイ 9f4c-C9DI)
2018/02/16(金) 22:03:34.89ID:qDhjnryl0 誰がハゲやねん
162デフォルトの名無しさん (マクド FF6b-xgEu)
2018/02/17(土) 09:43:48.64ID:Lqib7/b9F 以下のようにconst char*型の文字列でchar*型の変数を初期化したいときに
strcpyやstrlenを書かずにstd::stringを利用して短くかけないかと思うのですが
msvcだとエラーにならず、clang, gccだとdeleteでセグメンテーション違反になります。
どうすればより良い感じになるでしょうか?const_castはできれば使いたくないです。
#include <string.h>
#include <string>
#include <iostream>
int main()
{
const char* asdf = "asdf";
// char* psz2 = new char[strlen(asdf)+1];
// strcpy(psz2, asdf);
std::string *psz = new std::string(asdf);
char* psz2 = &(*psz)[0];
std::cout << psz2 << std::endl;
delete psz2;
return 0;
}
strcpyやstrlenを書かずにstd::stringを利用して短くかけないかと思うのですが
msvcだとエラーにならず、clang, gccだとdeleteでセグメンテーション違反になります。
どうすればより良い感じになるでしょうか?const_castはできれば使いたくないです。
#include <string.h>
#include <string>
#include <iostream>
int main()
{
const char* asdf = "asdf";
// char* psz2 = new char[strlen(asdf)+1];
// strcpy(psz2, asdf);
std::string *psz = new std::string(asdf);
char* psz2 = &(*psz)[0];
std::cout << psz2 << std::endl;
delete psz2;
return 0;
}
163デフォルトの名無しさん (ワッチョイ 378a-TkRA)
2018/02/17(土) 09:51:35.08ID:mykV+fTk0 delete psz2なんてしちゃだめconst関係ない
164デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/17(土) 10:21:38.22ID:4SqFrjwY0 何故stringそのものじゃなくて内部データをdeleteしようと思ったのか
newで確保した配列じゃないからdeleteはできない
stringの内部データは静的な配列と動的な配列を組み合わせて表現されている
mscvの場合先頭16文字はchar[16]でそれ以降は動的な配列に入るようになっている
psz[0]のアドレスはchar[16]の先頭アドレスなので当然deleteできない
msvcはdeleteに失敗しても落ちないのかな
newで確保した配列じゃないからdeleteはできない
stringの内部データは静的な配列と動的な配列を組み合わせて表現されている
mscvの場合先頭16文字はchar[16]でそれ以降は動的な配列に入るようになっている
psz[0]のアドレスはchar[16]の先頭アドレスなので当然deleteできない
msvcはdeleteに失敗しても落ちないのかな
165デフォルトの名無しさん (ワッチョイ ff80-Pey1)
2018/02/17(土) 10:47:53.57ID:IU1gsQgu0166デフォルトの名無しさん (ワッチョイ 9fcb-8YMj)
2018/02/17(土) 11:22:13.08ID:++v6vSjK0 ハンガリー人まだ絶滅してないのか。
stringはnull terminatedでないからpszはおかしい。
psz2もnull terminatedの保証がないからc_strを使うべき。
うまくいったらstrdupも調べとこうな。
stringはnull terminatedでないからpszはおかしい。
psz2もnull terminatedの保証がないからc_strを使うべき。
うまくいったらstrdupも調べとこうな。
167デフォルトの名無しさん (ワッチョイ d793-MfWd)
2018/02/17(土) 11:25:45.81ID:szUqPRvW0 >>162
char* psz2 = &(*psz)[0]; って
char* psz2 = psz->c_str(); と同じなのかな?
いずれにせよ delete psz; は出来る(するべき?)だけど、
delete psz2; は出来ないんじゃないかな。
char* psz2 = &(*psz)[0]; って
char* psz2 = psz->c_str(); と同じなのかな?
いずれにせよ delete psz; は出来る(するべき?)だけど、
delete psz2; は出来ないんじゃないかな。
168デフォルトの名無しさん (ワッチョイ 378a-TkRA)
2018/02/17(土) 11:30:29.43ID:mykV+fTk0 必要ないところでnew/delete使う人は根本からして何も分かってない
169デフォルトの名無しさん (ワッチョイ ff8a-NmL4)
2018/02/17(土) 15:18:23.73ID:YAgvIyFy0170デフォルトの名無しさん (ワッチョイ bf0e-qi38)
2018/02/17(土) 16:50:38.35ID:Q4Uv6cZz0 >>162
弁護士の唐沢です
しっかり「char* const」と「const char*」の違いを認識しなさい
const char*は参照先の定数を変更しない事を保証する宣言であり、char*は参照先の定数を変更できる為、const char*で保持するアドレスをchar*にコピーする事は言語仕様により禁止されています。それは分かるよね?
最初に宣言したポインタを間違えて別アドレスで上書きしないようにconstで固定したいのなら、char* constを使うようにしましょう。とりあえずとりいそぎ
弁護士の唐沢です
しっかり「char* const」と「const char*」の違いを認識しなさい
const char*は参照先の定数を変更しない事を保証する宣言であり、char*は参照先の定数を変更できる為、const char*で保持するアドレスをchar*にコピーする事は言語仕様により禁止されています。それは分かるよね?
最初に宣言したポインタを間違えて別アドレスで上書きしないようにconstで固定したいのなら、char* constを使うようにしましょう。とりあえずとりいそぎ
171デフォルトの名無しさん (ワッチョイ 9fe1-/1mG)
2018/02/17(土) 17:22:58.60ID:0j+aLKWi0 >>162
strdupという手があるが何がしたいのか今一つ分からない
const char* asdf = "asdf";
char *p = strdup(asdf);
std::cout << p << std::endl;
delete p;
strdupという手があるが何がしたいのか今一つ分からない
const char* asdf = "asdf";
char *p = strdup(asdf);
std::cout << p << std::endl;
delete p;
172デフォルトの名無しさん (ブーイモ MM3b-zxnT)
2018/02/17(土) 17:31:15.32ID:CLg9GPlRM >>170
それ誰に指摘してんの?とりいそぎ。
それ誰に指摘してんの?とりいそぎ。
173デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/17(土) 17:34:22.09ID:4SqFrjwY0 >>167
データは連続しているので同じになる
16文字まではスタックを使い、それ以上の長さになるとヒープにコピーされる
実装ではメンバの配列には何かしらのエスケープ文字が入る
ちなみにmsvcでは実装の都合上free(&str[0])で強引に解放できる
データは連続しているので同じになる
16文字まではスタックを使い、それ以上の長さになるとヒープにコピーされる
実装ではメンバの配列には何かしらのエスケープ文字が入る
ちなみにmsvcでは実装の都合上free(&str[0])で強引に解放できる
174173 (ワッチョイ 1f7e-T3WU)
2018/02/17(土) 17:49:08.26ID:4SqFrjwY0 補足
スタックとヒープを使い分けるかどうかは実装依存
gcc、clang、msvcでは行われている
したがって短い文字列でnewを避けるためにstringを使わないというのは意味が無い
スタックとヒープを使い分けるかどうかは実装依存
gcc、clang、msvcでは行われている
したがって短い文字列でnewを避けるためにstringを使わないというのは意味が無い
175デフォルトの名無しさん
2018/02/17(土) 18:06:03.81 >>171
strdupで確保した領域をfreeでなくdeleteするのは正しいの?
strdupで確保した領域をfreeでなくdeleteするのは正しいの?
176デフォルトの名無しさん (ワッチョイ 5781-qput)
2018/02/17(土) 18:09:26.31ID:Lp1rq1Kt0 良いみたいだ
中でmallocで確保している
中でmallocで確保している
177デフォルトの名無しさん (ワッチョイ 5781-qput)
2018/02/17(土) 18:10:04.88ID:Lp1rq1Kt0 違う、freeで開放する
178デフォルトの名無しさん (ワッチョイ bf0e-qi38)
2018/02/17(土) 18:14:21.37ID:Q4Uv6cZz0179デフォルトの名無しさん (ワッチョイ 9fb3-dLOu)
2018/02/17(土) 18:18:24.62ID:DOQJ47ER0 昔から気になってるんだが「解放」だよね...
180デフォルトの名無しさん (ワッチョイ 5781-qput)
2018/02/17(土) 18:25:00.27ID:Lp1rq1Kt0 そうでした、ごめんね
181デフォルトの名無しさん (ワッチョイ 9f5a-T3WU)
2018/02/17(土) 18:25:45.10ID:JVoP/9zU0182はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/17(土) 18:45:39.74ID:uBckbaXI0 >>162
ぶっちゃけた話、 strcpy が一番短いと思う。
ぶっちゃけた話、 strcpy が一番短いと思う。
183デフォルトの名無しさん
2018/02/17(土) 18:59:50.35 >>182
strdup という答えが出てるのに何言ってるの?
strdup という答えが出てるのに何言ってるの?
184はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/17(土) 19:05:58.96ID:uBckbaXI0185デフォルトの名無しさん (ワッチョイ 9fbd-RFe/)
2018/02/17(土) 19:07:20.59ID:u7LZaTzx0 >>166
接頭辞を見ればデータ内容の属性がワカルというメリットは他に代え難い
ttp://local.joelonsoftware.com/wiki/間違ったコードは間違って見えるようにする
あといちいちthis->xと書くよりも、すすんでm_xと書きましょう
接頭辞を見ればデータ内容の属性がワカルというメリットは他に代え難い
ttp://local.joelonsoftware.com/wiki/間違ったコードは間違って見えるようにする
あといちいちthis->xと書くよりも、すすんでm_xと書きましょう
186デフォルトの名無しさん (ワッチョイ 9fbd-RFe/)
2018/02/17(土) 19:21:01.63ID:u7LZaTzx0 strdup()だと明示的に開放コードをどっかに書かなくてはならなくて必ず忘れるので
せっかくC++なのでスマポ的にwrapすると良いと思う
せっかくC++なのでスマポ的にwrapすると良いと思う
187デフォルトの名無しさん (ワッチョイ 9f5a-T3WU)
2018/02/17(土) 19:37:41.81ID:JVoP/9zU0 ホワイトボックスなCでは許せるが
ブラックボックスなC++の流儀には全く合わない
それがstrdup
ブラックボックスなC++の流儀には全く合わない
それがstrdup
188167 (ワッチョイ d793-MfWd)
2018/02/17(土) 19:53:11.68ID:szUqPRvW0 >>173-174 教えてくれてありがとう。
返されるアドレスは等しい値なのか、という単純な質問だったんだけど、
読み直してみたら分かりにくい質問文だと思っていた次第。
それにしても &(*psz)[0] って結構ややこしいのね。
オーバーロードされた[]演算子が返すcharへの参照、
に対してアドレス演算子&を作用させた結果、て感じかな。
返されるアドレスは等しい値なのか、という単純な質問だったんだけど、
読み直してみたら分かりにくい質問文だと思っていた次第。
それにしても &(*psz)[0] って結構ややこしいのね。
オーバーロードされた[]演算子が返すcharへの参照、
に対してアドレス演算子&を作用させた結果、て感じかな。
189162 (ワイモマー MMbf-xgEu)
2018/02/17(土) 20:37:30.76ID:uaRb1j8RM すみません、たくさんレスありがとうございます。
_strdupにしてみたら期待の動作ができました。
ありがとうございました。
_strdupにしてみたら期待の動作ができました。
ありがとうございました。
190162 (ワイモマー MMbf-xgEu)
2018/02/17(土) 21:27:34.68ID:uaRb1j8RM また質問してすみません。
msvc(vs2017)だとコンパイラをC++17にしても以下のプログラムで
C2664 'void (T *&)': 引数 1 を 'hoge *' から 'hoge *&' へ変換できません。
となってしまうのですが、コードにバグが有るでしょうか?msvcのバグでしょうか?
GCCやClangではコンパイルできます。
#include <memory>
struct hoge {};
template <class T>
inline void safe_delete(T*& p) {
if (p) {
delete p;
p = nullptr;
}
}
int main() {
std::unique_ptr<hoge, decltype(&safe_delete<hoge>)> sp{new hoge(), safe_delete<hoge>};
return 0;
}
msvc(vs2017)だとコンパイラをC++17にしても以下のプログラムで
C2664 'void (T *&)': 引数 1 を 'hoge *' から 'hoge *&' へ変換できません。
となってしまうのですが、コードにバグが有るでしょうか?msvcのバグでしょうか?
GCCやClangではコンパイルできます。
#include <memory>
struct hoge {};
template <class T>
inline void safe_delete(T*& p) {
if (p) {
delete p;
p = nullptr;
}
}
int main() {
std::unique_ptr<hoge, decltype(&safe_delete<hoge>)> sp{new hoge(), safe_delete<hoge>};
return 0;
}
191デフォルトの名無しさん (ワッチョイ ff80-Pey1)
2018/02/17(土) 22:11:53.16ID:IU1gsQgu0 (T *&)
そもそも、ポインタ・参照を、同時に使えるのか?
そもそも、ポインタ・参照を、同時に使えるのか?
192片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdbf-ZgEC)
2018/02/17(土) 22:23:52.63ID:EwTJGG8Pd new hoge()は変数じゃないから、代入できない。
>>165
独習C++ はいいですね、特に演習問題「std::stringを再実装する」を絶賛します
これが書けるようになったらC++初級者をかたってもいいかもしれない、もしかすると解答は載ってなかったかもしれないけれども
独習C++ はいいですね、特に演習問題「std::stringを再実装する」を絶賛します
これが書けるようになったらC++初級者をかたってもいいかもしれない、もしかすると解答は載ってなかったかもしれないけれども
194デフォルトの名無しさん (ワッチョイ 9fcb-zxnT)
2018/02/17(土) 22:35:58.70ID:++v6vSjK0196デフォルトの名無しさん (ワッチョイ 9fcb-zxnT)
2018/02/17(土) 22:51:12.84ID:++v6vSjK0197デフォルトの名無しさん (ワッチョイ ff8a-NmL4)
2018/02/17(土) 22:52:19.16ID:YAgvIyFy0 頭悪いヤツが多様するハンガリアン
198デフォルトの名無しさん (ワッチョイ ff8a-NmL4)
2018/02/17(土) 22:54:25.25ID:YAgvIyFy0 嫌いだからハンガリアン意地でも使わなかった
dwやらszやらせっかくのフリーフォーマッとが台なしだよ
dwやらszやらせっかくのフリーフォーマッとが台なしだよ
199デフォルトの名無しさん (ワッチョイ bf0e-qi38)
2018/02/17(土) 22:59:56.16ID:Q4Uv6cZz0 フリーフォーマットはクソコードの温床ナリよ
200デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/17(土) 23:03:12.11ID:4SqFrjwY0 型を変えるたびに変数名も変えるのか
ごくろうやな
ごくろうやな
202デフォルトの名無しさん (ワッチョイ 9ff9-GHyv)
2018/02/17(土) 23:22:18.45ID:2kmwzB0g0 >>195
システムハンガリアンは弊害ばかりだろうけど、アプリケーションハンガリアンは適切に使えば有益だよ。
システムハンガリアンは弊害ばかりだろうけど、アプリケーションハンガリアンは適切に使えば有益だよ。
203デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/17(土) 23:25:09.87ID:4SqFrjwY0 mとかいらなくねってなって削ったら_から始まるようになった
204デフォルトの名無しさん (ワッチョイ 9fbd-RFe/)
2018/02/17(土) 23:38:55.74ID:u7LZaTzx0 データの属性としてサイズとか型そのものを明示したいときはシステムハンガリアンするしかないし、
よってWIN32APIがシステムハンガリアンを使って定義されるのは全く正しい
問題なのはアプリケーションハンガリアンすべきときと
システムハンガリアンすべきときが区別できない香具師が適当に使うと
被害甚大だということやがな…
よってWIN32APIがシステムハンガリアンを使って定義されるのは全く正しい
問題なのはアプリケーションハンガリアンすべきときと
システムハンガリアンすべきときが区別できない香具師が適当に使うと
被害甚大だということやがな…
205デフォルトの名無しさん (ワッチョイ d77f-T3WU)
2018/02/17(土) 23:41:05.97ID:YmD9lILj0 今時システムハンガリアンは無いだろ
20年前で時間が止まってるのかよ
20年前で時間が止まってるのかよ
206デフォルトの名無しさん (ワッチョイ 9fbd-RFe/)
2018/02/17(土) 23:42:44.53ID:u7LZaTzx0207デフォルトの名無しさん (ワッチョイ d77f-T3WU)
2018/02/17(土) 23:49:32.45ID:YmD9lILj0 ググればいいだろ
積極的批判
システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。変更を怠ると、たちまち不整合となり、保守の障害となるだけで一利もない。
C++やC#のような言語では型付けが存在するためにシステムハンガリアンを使用することによる利点はない[3]。
移植性を阻害する。
総称型、メタプログラミングとの相性が悪い。
消極的批判
いわゆる良書と呼ばれるようなC++本で、現在[いつ?]システムハンガリアンを採用している例が皆無。
かつてWindows API/MFCにおいてハンガリアンを全面的に採用していたMicrosoft自身が、.NET Frameworkではハンガリアンを禁止[1]している。
積極的批判
システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。変更を怠ると、たちまち不整合となり、保守の障害となるだけで一利もない。
C++やC#のような言語では型付けが存在するためにシステムハンガリアンを使用することによる利点はない[3]。
移植性を阻害する。
総称型、メタプログラミングとの相性が悪い。
消極的批判
いわゆる良書と呼ばれるようなC++本で、現在[いつ?]システムハンガリアンを採用している例が皆無。
かつてWindows API/MFCにおいてハンガリアンを全面的に採用していたMicrosoft自身が、.NET Frameworkではハンガリアンを禁止[1]している。
208デフォルトの名無しさん (ワッチョイ d7b3-hxII)
2018/02/17(土) 23:52:28.19ID:YEFSbrC50 申し訳ないがコピペディアからのウィキペはNG
209デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/17(土) 23:54:40.85ID:4SqFrjwY0 型なんてマウスオーバーなりすれば表示されるだろ
変数名に書いておかなきゃわからないとかメモ帳で書いてるのかよ
変数名に書いておかなきゃわからないとかメモ帳で書いてるのかよ
210はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/18(日) 00:10:56.39ID:OOIPfNvY0 >>190
デリータはポインタが指す先のリソースを後始末するのが仕事であって、
ポインタが無効になるという処理は unique_ptr の側でやってくれるので、
ヌルを代入する必要はない。
むしろ unique_ptr 内で管理しているものをデリータが勝手に弄るのは好ましくないので、
参照で受けるのはやめてさしあげろ。
私なりに仕様を読んでこの場合をエラーにする根拠は発見できなかったが、
エラーになってくれる方がありがたい場面だと思う。
デリータはポインタが指す先のリソースを後始末するのが仕事であって、
ポインタが無効になるという処理は unique_ptr の側でやってくれるので、
ヌルを代入する必要はない。
むしろ unique_ptr 内で管理しているものをデリータが勝手に弄るのは好ましくないので、
参照で受けるのはやめてさしあげろ。
私なりに仕様を読んでこの場合をエラーにする根拠は発見できなかったが、
エラーになってくれる方がありがたい場面だと思う。
211デフォルトの名無しさん (ワッチョイ d7f2-T3WU)
2018/02/18(日) 00:16:38.53ID:Ct2k6iqr0 デリータに渡されるのは左辺値と限らないからだろう。
212はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/18(日) 00:25:54.07ID:OOIPfNvY0 N3337 だと 516 ページの説明がデリータの要件だと思うんだけど、
デリータ d の型が D で ptr の型が unique_ptr<T, D>::pointer のとき式 d(ptr) が valid であることと書いてあって、
ptr が rvalue か lvalue かってのは特に指定がない。 (どこかに書いてあったりする?)
この説明で言ってる ptr が変数名なのだとしたら暗に lvalue とほのめかしてるようにも思えなくもないし、よくわからん。
わからんことは避けて通りたい。
デリータ d の型が D で ptr の型が unique_ptr<T, D>::pointer のとき式 d(ptr) が valid であることと書いてあって、
ptr が rvalue か lvalue かってのは特に指定がない。 (どこかに書いてあったりする?)
この説明で言ってる ptr が変数名なのだとしたら暗に lvalue とほのめかしてるようにも思えなくもないし、よくわからん。
わからんことは避けて通りたい。
213はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/18(日) 00:30:57.46ID:OOIPfNvY0 私なりの見解としては未定義だと思ってる。
未定義ならばやったらエラーになる方向にしてくれる方がありがたいという思い。
未定義ならばやったらエラーになる方向にしてくれる方がありがたいという思い。
214デフォルトの名無しさん (ブーイモ MM3b-zxnT)
2018/02/18(日) 00:35:36.09ID:ju8BsRCFM >>206
ABIにシステムハンガリアン関係ないだろ…
APIを指してるとして、呼び出し側はリファレンスマニュアルなりIDE機能なりを利用して引数の型情報も
システムハンガリアンが付いている仮引数名と同時に参照しているはずだよね?情報重複してるけど本当に必要?
仮引数名のシステムハンガリアンの有無に関わらず、APIのシグネチャは用意に変更してはならないものだけど、
そもそも仮引数名はシグネチャじゃないからシステムハンガリアンがついていたって何の保証にもならないよ?
ABIにシステムハンガリアン関係ないだろ…
APIを指してるとして、呼び出し側はリファレンスマニュアルなりIDE機能なりを利用して引数の型情報も
システムハンガリアンが付いている仮引数名と同時に参照しているはずだよね?情報重複してるけど本当に必要?
仮引数名のシステムハンガリアンの有無に関わらず、APIのシグネチャは用意に変更してはならないものだけど、
そもそも仮引数名はシグネチャじゃないからシステムハンガリアンがついていたって何の保証にもならないよ?
215はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/18(日) 00:51:32.90ID:OOIPfNvY0 重複する情報をコンパイラの支援なく一致させ続けることが出来るだろうか。 いや、できない。
って話よね。
まあ世の中にはそういうのを検査するツールとかもあるんだろうけどさぁ、
そういうツールを導入できる環境ならまともな IDE だって使えるだろう。
って話よね。
まあ世の中にはそういうのを検査するツールとかもあるんだろうけどさぁ、
そういうツールを導入できる環境ならまともな IDE だって使えるだろう。
216162 (マクド FF6b-xgEu)
2018/02/18(日) 08:06:35.40ID:F3zIry6ZF >>210
>>211
レスありがとうございます。
shared_ptrだと行けるのでなんかすればコンパイル通るのではないかと
思ったのですがだめなんですね〜。
普通に使う用とカスタムデリータに使う用と二種類用意してやり過ごしてみたいと思います。
template <class T>
inline void safe_release(T*& p) {
if (p) {
p->Release();
p = nullptr;
}
}
template <class T>
inline void custom_deleter(T* p) {
p->Release();
// p = nullptr; no meaning
}
>>211
レスありがとうございます。
shared_ptrだと行けるのでなんかすればコンパイル通るのではないかと
思ったのですがだめなんですね〜。
普通に使う用とカスタムデリータに使う用と二種類用意してやり過ごしてみたいと思います。
template <class T>
inline void safe_release(T*& p) {
if (p) {
p->Release();
p = nullptr;
}
}
template <class T>
inline void custom_deleter(T* p) {
p->Release();
// p = nullptr; no meaning
}
217デフォルトの名無しさん (ワッチョイ 9fbd-RFe/)
2018/02/18(日) 12:41:44.81ID:OWXn9djh0 >>207
藻前はレスをきちんと読んでいないのではないか
>システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。(>>207)
に直接対応する元レス>>206は、
>データの属性としてサイズとか型そのものを明示したいとき(>>204)
について述べているのでデータ型変更時のコストを言い立てても批判にならない
消極的批判については、アプリケーションハンガリアンすべきときと システムハンガリアンすべきときが
区別できない香具師の的外れな批判がクソウゼーからそうなったのかもしれん、
(ちな両者を区別できない香具師への警戒も>>204で言及済み
藻前はレスをきちんと読んでいないのではないか
>システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。(>>207)
に直接対応する元レス>>206は、
>データの属性としてサイズとか型そのものを明示したいとき(>>204)
について述べているのでデータ型変更時のコストを言い立てても批判にならない
消極的批判については、アプリケーションハンガリアンすべきときと システムハンガリアンすべきときが
区別できない香具師の的外れな批判がクソウゼーからそうなったのかもしれん、
(ちな両者を区別できない香具師への警戒も>>204で言及済み
218デフォルトの名無しさん (ワッチョイ 9fbd-RFe/)
2018/02/18(日) 12:42:38.82ID:OWXn9djh0 >>214
十分賢いIDEが人間のミスを完璧に排除してくれるんならそうかもしれんが
システムハンガリアンをしてはいけないという積極的理由にはやはりならないのであった
それとも「間違ったコードは間違って見えるようにする 」(>>185)の効能を全否定する?
APIの定義は変わらなくとも、それを利用するソースコードがころころ変わり得るわけで、
byStrLength
にある日だれかがDWORD型の値を突っ込んだとしたら…
こういうケースを考えたら、「接頭辞を見ればデータ内容の属性がワカルというメリット(>>185)」は
ありえないぐらい賢いIDEでも使わないと他に代え難いと思うがどうか、
>>198
>嫌いだからハンガリアン意地でも使わなかった
おk ようやく建設的な議論に着手できる、
十分賢いIDEが人間のミスを完璧に排除してくれるんならそうかもしれんが
システムハンガリアンをしてはいけないという積極的理由にはやはりならないのであった
それとも「間違ったコードは間違って見えるようにする 」(>>185)の効能を全否定する?
APIの定義は変わらなくとも、それを利用するソースコードがころころ変わり得るわけで、
byStrLength
にある日だれかがDWORD型の値を突っ込んだとしたら…
こういうケースを考えたら、「接頭辞を見ればデータ内容の属性がワカルというメリット(>>185)」は
ありえないぐらい賢いIDEでも使わないと他に代え難いと思うがどうか、
>>198
>嫌いだからハンガリアン意地でも使わなかった
おk ようやく建設的な議論に着手できる、
219デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/18(日) 13:01:54.53ID:Tc3/Tap60 あり得ないくらいバカなプログラマのことなんか考慮してない
220デフォルトの名無しさん (ワッチョイ d7b3-hxII)
2018/02/18(日) 13:02:14.72ID:hSV7DJYb0 マウスオーバーで変数の型を確認できたり、縮小変換に警告を出してくれたりする程度のありふれた機能が、ありえないぐらい賢いとな
お前さんはメモ帳でコーディングしてるのか
お前さんはメモ帳でコーディングしてるのか
>>220
emacs にもそんな機能がほしいと思うことがあります
emacs にもそんな機能がほしいと思うことがあります
222デフォルトの名無しさん (スッップ Sdbf-0Jtz)
2018/02/18(日) 13:20:53.92ID:y51LwXumd システムハンガリアンでミスを減らせるなんて事はない
むしろ害悪
むしろ害悪
223デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/18(日) 13:27:53.30ID:Tc3/Tap60224はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/18(日) 13:30:05.77ID:OOIPfNvY0225デフォルトの名無しさん (ワッチョイ 378a-TkRA)
2018/02/18(日) 13:38:55.48ID:R2RwPqEs0 今時システムハンガリアンを使うやつはあり得ないくらいのバカだということが決定しました
226デフォルトの名無しさん (ブーイモ MM3b-zxnT)
2018/02/18(日) 13:41:43.01ID:IMbK2zhKM >>218
間違ったコードは間違ったように見えるようにする、について、
あなたが指し示した引用元が言及してるのはアプリケーションハンガリアンについてなんだけど…
システムハンガリアンについては否定的意見。
ちゃんと読んだの?
間違ったコードは間違ったように見えるようにする、について、
あなたが指し示した引用元が言及してるのはアプリケーションハンガリアンについてなんだけど…
システムハンガリアンについては否定的意見。
ちゃんと読んだの?
228デフォルトの名無しさん (ブーイモ MM3b-zxnT)
2018/02/18(日) 14:15:44.65ID:IMbK2zhKM >>218
APIの仮引数にシステムハンガリアンをつけたことで、間違ったAPI呼び出しが間違ったように見えるのはいつ?
APIのリファレンスなり宣言文なりを自分のコードと見比べたときでしょ?その時必ず型情報も見てるよね?情報重複してるよ?
あとIDEが自動でミスを排除してくれるなんて書いてないよ?ちゃんと読んで
APIの仮引数にシステムハンガリアンをつけたことで、間違ったAPI呼び出しが間違ったように見えるのはいつ?
APIのリファレンスなり宣言文なりを自分のコードと見比べたときでしょ?その時必ず型情報も見てるよね?情報重複してるよ?
あとIDEが自動でミスを排除してくれるなんて書いてないよ?ちゃんと読んで
229デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/18(日) 15:46:49.02ID:Tc3/Tap60 入れる変数の型と引数の型を確認しない奴とかいるのか
暗黙の型変換は警告を出せばいいし
どうしても見落とすのならコンパイルエラーにしてしまえばいい
あとメンバ変数もテキストの色を変えればいいからm_もいらない
暗黙の型変換は警告を出せばいいし
どうしても見落とすのならコンパイルエラーにしてしまえばいい
あとメンバ変数もテキストの色を変えればいいからm_もいらない
230デフォルトの名無しさん (ワッチョイ ff8a-NmL4)
2018/02/18(日) 16:01:36.00ID:dLlRK2Wa0 m_はホント見苦しい
231デフォルトの名無しさん (ワッチョイ bfe7-JyXB)
2018/02/18(日) 20:07:07.34ID:8oVyjimH0 m_だけならまだ我慢できるけど
this->を必ず付けるルールと併用するのは本当にやめろどっちかにしろ
this->を必ず付けるルールと併用するのは本当にやめろどっちかにしろ
232デフォルトの名無しさん (ワッチョイ 9fb9-T3WU)
2018/02/18(日) 20:15:52.43ID:eae4wPFh0 > this->を必ず付けるルール
破門だろ
C++使うなそんなボケどもは
破門だろ
C++使うなそんなボケどもは
233デフォルトの名無しさん (ワッチョイ 9f12-pjg9)
2018/02/18(日) 21:14:42.68ID:SQcbDAgv0 ちげえんだよなぁ
thisというキーワードが存在してるから、その存在そのものが、それを書かねばならないような強制力を産み出してる
「存在するが、書かなくてもいい」っていうどっちつかずが、一番論争になる
その反対が「存在しないから書けない」だ
これだと単純明快だ
なんせ、書けない
「書くべきか書かざるべきか」のどーーーでもいい二択に迫られると、とたんに宗教になる
thisというキーワードが存在してるから、その存在そのものが、それを書かねばならないような強制力を産み出してる
「存在するが、書かなくてもいい」っていうどっちつかずが、一番論争になる
その反対が「存在しないから書けない」だ
これだと単純明快だ
なんせ、書けない
「書くべきか書かざるべきか」のどーーーでもいい二択に迫られると、とたんに宗教になる
234デフォルトの名無しさん (ワッチョイ 9fb9-T3WU)
2018/02/18(日) 21:16:52.71ID:eae4wPFh0 キーワードが存在するのと実体が存在することの違いがそんなに大事なのか?
じゃあvtableのキーワードが存在しないことを、おまえはどう考えている?
じゃあvtableのキーワードが存在しないことを、おまえはどう考えている?
235デフォルトの名無しさん (ワッチョイ bf37-ytZF)
2018/02/18(日) 21:33:09.71ID:Pbt6vSqU0 >>231
オケツに_をつけてますわ
オケツに_をつけてますわ
236デフォルトの名無しさん (ワッチョイ ff8a-NmL4)
2018/02/18(日) 21:33:14.46ID:dLlRK2Wa0 おれがそのソースを引き継いだらまず初めにやることは一つ
「this->」から「」への全ソース一括置換
「this->」から「」への全ソース一括置換
237デフォルトの名無しさん (ワッチョイ d7f2-T3WU)
2018/02/18(日) 21:56:25.56ID:Ct2k6iqr0 「m_」はダメで「_」ならいいってのはなんというか、合理的な理由よりも感覚・感情的なものかね。
this-> つけるほうが分かりやすくていいと思うのですが、変てこな接尾辞・接頭辞よりも
239デフォルトの名無しさん (ワッチョイ d77f-T3WU)
2018/02/18(日) 22:00:36.01ID:tWqaO5mz0 m_xxx も xxx_ もなんの保証にもならんからな
this->は必ずメンバになるけど
this->は必ずメンバになるけど
240デフォルトの名無しさん (ワッチョイ 9f4c-C9DI)
2018/02/18(日) 22:37:59.28ID:UEE7OeWn0 _はグーグルスタイルの圧力
241デフォルトの名無しさん (ワッチョイ ff76-BAP3)
2018/02/18(日) 22:42:10.00ID:WjKwYRHz0 余計な命名規約を作るくらいなら言語機能を使った方が良いわな
this->派だわ
this->派だわ
242デフォルトの名無しさん (ワッチョイ bf0e-qi38)
2018/02/18(日) 23:21:23.43ID:AjuHfv4B0 thisで明示した方が所在がハッキリして良いナリ
当職は名前空間もusingせずに明示しろ派ナリ
安易な省略はタイプ数を減らすという軽微なメリットと引き換えに可読性を落としケアレスミスを誘発するという恐ろしいデメリットを孕むナリ
当職は名前空間もusingせずに明示しろ派ナリ
安易な省略はタイプ数を減らすという軽微なメリットと引き換えに可読性を落としケアレスミスを誘発するという恐ろしいデメリットを孕むナリ
243デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/19(月) 00:00:39.93ID:hDVR9PRD0244デフォルトの名無しさん (ワッチョイ ff8a-NmL4)
2018/02/19(月) 00:14:25.92ID:o8qstbSZ0 _付けるなら変数の後ろだろ
245デフォルトの名無しさん
2018/02/19(月) 00:18:14.94 C/C++なら必然的に末尾に付けるしかない
先頭に_付けるような情弱は死ねばいい
Perl/Pythonだと先頭に付けるけどな
先頭に_付けるような情弱は死ねばいい
Perl/Pythonだと先頭に付けるけどな
246デフォルトの名無しさん (ワッチョイ 17c3-T3WU)
2018/02/19(月) 00:42:17.66ID:SSx66hQd0 やらんけど、前一つなら規約には引っかからないんじゃなかったけ
247デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/19(月) 00:57:15.60ID:hDVR9PRD0 未定義なのは
_始まりでグローバルスコープにあるもの
_始まりでアルファベットの大文字が続くもの全て
__で始まるもの全て
1番目の_始まりなだけならローカル変数、引数、メンバでは予約されていないので使ってもよい
_始まりでグローバルスコープにあるもの
_始まりでアルファベットの大文字が続くもの全て
__で始まるもの全て
1番目の_始まりなだけならローカル変数、引数、メンバでは予約されていないので使ってもよい
248はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/19(月) 01:15:36.25ID:gMMBYzvP0249はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/19(月) 01:20:40.79ID:gMMBYzvP0250デフォルトの名無しさん (ワッチョイ 1f7e-T3WU)
2018/02/19(月) 02:05:55.66ID:hDVR9PRD0 コーディング規約はうろ覚えだけど自由度の高いBoostスタイルを薦める
publicな識別子はstdに合わせて小文字スネークケース
マクロはBOOST_から始める
インデントはスペース、一行の文字数は80文字を推奨
意味のある名前を付けることを推奨
ファイル構成に関するもの
その他細々としたもの
ライブラリごとのローカルルールがある場合もある
あとは自由
thisを付けろだとか改行の仕方だとかは一切書かれてない
publicな識別子はstdに合わせて小文字スネークケース
マクロはBOOST_から始める
インデントはスペース、一行の文字数は80文字を推奨
意味のある名前を付けることを推奨
ファイル構成に関するもの
その他細々としたもの
ライブラリごとのローカルルールがある場合もある
あとは自由
thisを付けろだとか改行の仕方だとかは一切書かれてない
251デフォルトの名無しさん (ワッチョイ bf0e-qi38)
2018/02/19(月) 02:37:36.58ID:SEa8F8NC0 >>248-249
お互いにマナーを守る世界は過ごしやすいがマナーの厳守を要求し出すと途端に息苦しくなるナリ
自分にも他人にも読み易いコードを書こうという気遣いが見て取れるなら細かく突っ込んだりはしないナリ
お互いにマナーを守る世界は過ごしやすいがマナーの厳守を要求し出すと途端に息苦しくなるナリ
自分にも他人にも読み易いコードを書こうという気遣いが見て取れるなら細かく突っ込んだりはしないナリ
252デフォルトの名無しさん (ワッチョイ ff3f-T3WU)
2018/02/19(月) 05:40:18.76ID:wBFQMwB50 this->で必ずメンバというやつら
じゃあ必ずブロック内変数という表記もしたらどうだ
じゃあ必ずブロック内変数という表記もしたらどうだ
253デフォルトの名無しさん (アウアウアー Sa4f-rtnb)
2018/02/19(月) 12:45:29.69ID:yTAVcy/Ya 使うライブラリや開発環境の内部のスタイルに合わせるけどな。
派生クラスとかAPIのラッパークラスとか作り始めると、
どうしても内部の書き方に合わせておいた方が読みやすいし。
今でもWin32とかMFCでやることもあるけど、
そのときはm_とかpとかhとかdwとかバンバンつける。
派生クラスとかAPIのラッパークラスとか作り始めると、
どうしても内部の書き方に合わせておいた方が読みやすいし。
今でもWin32とかMFCでやることもあるけど、
そのときはm_とかpとかhとかdwとかバンバンつける。
254はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-T3WU)
2018/02/19(月) 13:19:17.15ID:gMMBYzvP0 使う側の都合に合わせろよ。 ラップしてるのに中身のスタイルが漏れてるんじゃラップの甲斐がなくね?
中身を知ってる人がちょっとした便利のためだけに薄いラッパを作る場合ならそういう選択もあるだろうけど。
中身を知ってる人がちょっとした便利のためだけに薄いラッパを作る場合ならそういう選択もあるだろうけど。
255デフォルトの名無しさん (ワッチョイ 9f9d-MriG)
2018/02/19(月) 14:36:30.11ID:00nJVfHA0 コンバータにあわせろよ。C#で作ってコンバータかけた方が綺麗スッキリするんだから。
256デフォルトの名無しさん (ドコグロ MMcb-dLOu)
2018/02/19(月) 19:36:41.65ID:2cNNs3G6M >>253
そりゃAPIに渡す構造体でdwSizeとか使われてたらそこだけは合わせざるを得ないけど自分のコードスタイルを合わせる必要はないだろ
そりゃAPIに渡す構造体でdwSizeとか使われてたらそこだけは合わせざるを得ないけど自分のコードスタイルを合わせる必要はないだろ
257デフォルトの名無しさん (ワッチョイ 9fbd-RFe/)
2018/02/19(月) 20:29:38.46ID:czaD+lHv0 Windows メインで作業されている方で、
valgrind を併用している方はおられませんか?
もしよろしければ使用感をお聞かせいただけませんか
operator new()/operator delete() 乗っ取りデバッグに限界を感じてしまっている状況です
(cl や bcc32/bcc32c/bcc64 では new/delete 乗っ取りができません)
いや、さっさと入れればいいのですが、仮想環境とかよくわからないし…Vine Linux 以来触ってないし…
valgrind を併用している方はおられませんか?
もしよろしければ使用感をお聞かせいただけませんか
operator new()/operator delete() 乗っ取りデバッグに限界を感じてしまっている状況です
(cl や bcc32/bcc32c/bcc64 では new/delete 乗っ取りができません)
いや、さっさと入れればいいのですが、仮想環境とかよくわからないし…Vine Linux 以来触ってないし…
259デフォルトの名無しさん (ワッチョイ 974f-4dOP)
2018/02/21(水) 01:13:14.52ID:wPLJFyuu0 windowsならapplication verifier使えば?
260デフォルトの名無しさん (ワッチョイ 1768-xgEu)
2018/02/21(水) 09:49:28.54ID:8k15W99L0 以下のURLのプログラムでSFINAEを試してみていて
https://wandbox.org/permlink/LqKmn50PaPbtohs5
BOOST_TTI_HAS_MEMBER_FUNCTIONを使えば
has_funcというメタ関数を使わずに済んで、短くできないかと試行錯誤中なのですが
うまく行きません。
どうやったらビルドが通るようになるでしょうか?
https://wandbox.org/permlink/LqKmn50PaPbtohs5
BOOST_TTI_HAS_MEMBER_FUNCTIONを使えば
has_funcというメタ関数を使わずに済んで、短くできないかと試行錯誤中なのですが
うまく行きません。
どうやったらビルドが通るようになるでしょうか?
261デフォルトの名無しさん (ワッチョイ 9fa2-T3WU)
2018/02/21(水) 18:31:01.90ID:8+abUSIR0 まずはそのうまく行かないコードを示したら?
262片山博文MZ ◆T6xkBnTXz7B0 (スププ Sdbf-ZgEC)
2018/02/21(水) 19:26:19.92ID:UifE8nP3d263260 (マクド FF6b-xgEu)
2018/02/21(水) 19:34:37.06ID:EmINyJBAF すみません、BOOST_TTI_HAS_MEMBER_FUNCTIONを使って短くする以前に元々が間違っていました。
以下の3つでオーバーロードしたかったのでした。
・funcというメンバ関数を持つダブルポインタ
・funcというメンバ関数を持たないダブルポインタ
・それ以外
それで思ったのですが多分、Boost.TTIライブラリで
〇〇というメンバ関数を持つクラス、を識別するメタ関数は作れても
〇〇というメンバ関数を持つクラスのダブルポインタ、は無理な気がしてきました。
一旦諦めようと思います。
以下の3つでオーバーロードしたかったのでした。
・funcというメンバ関数を持つダブルポインタ
・funcというメンバ関数を持たないダブルポインタ
・それ以外
それで思ったのですが多分、Boost.TTIライブラリで
〇〇というメンバ関数を持つクラス、を識別するメタ関数は作れても
〇〇というメンバ関数を持つクラスのダブルポインタ、は無理な気がしてきました。
一旦諦めようと思います。
264260 (マクド FF6b-xgEu)
2018/02/21(水) 23:10:49.37ID:EmINyJBAF265デフォルトの名無しさん (ワッチョイ c667-x4Or)
2018/02/22(木) 10:26:41.79ID:qwLRFwLN0 >>263
あと2年待てばconceptできるかもよ
あと2年待てばconceptできるかもよ
266デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/22(木) 21:31:34.66ID:SOkZDC9P0 (VBみたいな名前付き引数が実現されたら
システムハンガリアン否定論者をぎゃふんと言わせられるのに…
システムハンガリアン否定論者をぎゃふんと言わせられるのに…
267デフォルトの名無しさん (ワッチョイ c667-x4Or)
2018/02/22(木) 21:55:24.65ID:qwLRFwLN0 システムハンガリアン発祥の会社が何か作ったら否定論者がぎゃふんと言うのか?
おまえの頭の中は論点先取だか循環論法だかがグルグル回っているようだな
おまえの頭の中は論点先取だか循環論法だかがグルグル回っているようだな
268デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/23(金) 22:10:42.23ID:XlnyEs6k0 ↑
想像してごらん全ての人々が
dwRet = ::WaitForSingleObject( hHandle = m_hThread, dwMillisecond = m_hTCTmo )
と書く世界を、
想像してごらん全ての人々が
dwRet = ::WaitForSingleObject( hHandle = m_hThread, dwMillisecond = m_hTCTmo )
と書く世界を、
269デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/23(金) 22:11:40.62ID:XlnyEs6k0 ごめ
誤: m_hTCTmo
正: m_dwTCTmo
見れば間違いがワカルのがハンガリアンの極めて良いところ
誤: m_hTCTmo
正: m_dwTCTmo
見れば間違いがワカルのがハンガリアンの極めて良いところ
270デフォルトの名無しさん (ブーイモ MM5e-chUR)
2018/02/23(金) 22:21:40.17ID:R3lraTlNM271デフォルトの名無しさん (ワッチョイ ba12-SJjx)
2018/02/24(土) 10:44:07.22ID:mn7A8TMg0 一分間で間違いに気づいてはいるものの
そもそもの書く瞬間にはどうやら人智を用いても気付けないらしいから
IDEにエラー出してもらった方が早いんじゃあねえの
実は人間の集中力を超えたところにある方法論で、実践するとストレスが溜まるっぽいから、機械任せにした方がいい
それに、書いてる最中は変数の型まで考えたくない
見て分かることは、機械任せにすれば見なくても分かるから、
今のご時世、人間の有限の集中力を目視チェックなんかに使いたくない
脳みそのリソースはもっと別のところに使うべきだ
つまりは、書いてる最中は脳みそが「それが正しい」と思い込んでるから、
間違いは自分自身では絶対に分からない
これがバグを作り込む
hだったかdwだったかを脳が自動的に混同してるから、その分だけ余計に脳のリソースを使っている
「なんで書いている最中に自分自身で気付かないのか」、これ、とても重要だよ
そもそもの書く瞬間にはどうやら人智を用いても気付けないらしいから
IDEにエラー出してもらった方が早いんじゃあねえの
実は人間の集中力を超えたところにある方法論で、実践するとストレスが溜まるっぽいから、機械任せにした方がいい
それに、書いてる最中は変数の型まで考えたくない
見て分かることは、機械任せにすれば見なくても分かるから、
今のご時世、人間の有限の集中力を目視チェックなんかに使いたくない
脳みそのリソースはもっと別のところに使うべきだ
つまりは、書いてる最中は脳みそが「それが正しい」と思い込んでるから、
間違いは自分自身では絶対に分からない
これがバグを作り込む
hだったかdwだったかを脳が自動的に混同してるから、その分だけ余計に脳のリソースを使っている
「なんで書いている最中に自分自身で気付かないのか」、これ、とても重要だよ
272デフォルトの名無しさん (スップ Sd02-2/+O)
2018/02/24(土) 11:11:20.01ID:51zBno3Kd 変数名と型が一致してるという保証がゼロだからシステムハンガリアンなんて無駄以外の何物でもない
無駄というか悪
無駄というか悪
273デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/24(土) 12:15:45.87ID:mm9B9rZ50274デフォルトの名無しさん (ワッチョイ df7f-x4Or)
2018/02/24(土) 12:23:50.23ID:b3ZDZ7IS0 その場合、やめられる方だけやめればいいな
つまりハンガリアンを。
つまりハンガリアンを。
275デフォルトの名無しさん (ワッチョイ b7b3-x4Or)
2018/02/24(土) 12:27:42.98ID:pqM6ijVV0 まともな開発環境使っていれば必要ないのでは
276デフォルトの名無しさん (ワッチョイ c6cb-chUR)
2018/02/24(土) 12:34:43.53ID:B9f7/evx0 ハンガリアンはもうだめだ。
ポーランドを使おう。
ポーランドを使おう。
277デフォルトの名無しさん (ワッチョイ 520e-MTlB)
2018/02/24(土) 12:51:07.68ID:d7+fd25J0 >>272
そういう事言い出すと「関数名と機能が一致してる保証がゼロ」や「クラスメンバの隠蔽が完璧である保証がゼロ」などといくらでも難癖を付けれるナリ
ヒューマンエラーを理由に不要と結論付けるのならあらゆるコーディング規約が不要という結論になってしまう、これはいけない
命名規則は可読性の向上に結びつくものでなければならない、規約を違反する事で起きるトラブルはプログラマ側の責任、それは分かるよね?
そういう事言い出すと「関数名と機能が一致してる保証がゼロ」や「クラスメンバの隠蔽が完璧である保証がゼロ」などといくらでも難癖を付けれるナリ
ヒューマンエラーを理由に不要と結論付けるのならあらゆるコーディング規約が不要という結論になってしまう、これはいけない
命名規則は可読性の向上に結びつくものでなければならない、規約を違反する事で起きるトラブルはプログラマ側の責任、それは分かるよね?
278デフォルトの名無しさん (ワッチョイ df7f-x4Or)
2018/02/24(土) 13:26:14.86ID:b3ZDZ7IS0 ヒューマンエラーが起きる部分は極力排除して機械任せにできる部分は機械任せにすればいい
ハンガリアンを導入する理由はもはや無いな。可読性悪いし。
ハンガリアンを導入する理由はもはや無いな。可読性悪いし。
279デフォルトの名無しさん (ワッチョイ ea60-MTlB)
2018/02/24(土) 14:24:10.94ID:yWQ45jBy0280デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/24(土) 14:29:08.35ID:mm9B9rZ50 可読性ぐらいテンプレートによる高度なメタプログラミングに慣れた諸兄なら
ハンガリアンごとき目を慣らして解決できるはずなんじゃ…
ハンガリアンごとき目を慣らして解決できるはずなんじゃ…
281はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e66f-x4Or)
2018/02/24(土) 15:03:19.72ID:ohURjCBl0283デフォルトの名無しさん (ワッチョイ 2f93-IXLF)
2018/02/24(土) 17:03:03.20ID:agv5rOmv0284デフォルトの名無しさん (ブーイモ MM5e-Clm8)
2018/02/24(土) 17:08:35.75ID:4JIC+wG/M なぁにその内、ロシアが併呑してくれるさ
285デフォルトの名無しさん (ワッチョイ 70b3-Tnpk)
2018/02/25(日) 14:16:53.97ID:8l5JrV0a0 >>266
名前付き引数イディオムとenable_if<is_same<...>::value>が最強と言うことだな
※プログラマが、使用者が型を間違えないようにと気を使うのが正しいなら、間違えたらコンパイルエラーになるこれが最強だろ?
名前付き引数イディオムとenable_if<is_same<...>::value>が最強と言うことだな
※プログラマが、使用者が型を間違えないようにと気を使うのが正しいなら、間違えたらコンパイルエラーになるこれが最強だろ?
286デフォルトの名無しさん (ワッチョイ ba12-SJjx)
2018/02/25(日) 14:35:24.31ID:zhzj1IkW0 >>277
ちげえんだよんぁ
可読性じゃねえんだよ
>>268を見てみろよ、
読む時じゃなくて書く時のヒューマンエラーだ
なんで入り込んだのか全く分からんようなミステイクだ
プログラミングが工業的生産の一種なら、その手のヒューマンエラーは無い方がいい
で、改めて>>268を見てみると、「可読性」があってプレフィクスの間違いに気付いてはいるものの、
そもそも書く段でなんで間違えたのか、それが全く分からない
他人はおろか本人すらも自覚できない謎の理由でプレフィクスを間違えてる(これがヒューマンエラーなんだけどな)
なんで、後だしジャンケンだと、「プレフィクスが最初から無ければ、間違いも発生しえなかった」、とも言える
もしかすると、書く時に間違える/読む時に間違える の比率を考えると、ハンガリアン記法は書く時に間違えやすいが読むときに間違いにくい……のトレードオフなだけかもしれん
要するに、可読性と生産性のトレードオフだけなんじゃあねえのか?
それに、読む時のヒューマンエラーと書く時のヒューマンエラーをわざと混同してるのはいただけない
ちげえんだよんぁ
可読性じゃねえんだよ
>>268を見てみろよ、
読む時じゃなくて書く時のヒューマンエラーだ
なんで入り込んだのか全く分からんようなミステイクだ
プログラミングが工業的生産の一種なら、その手のヒューマンエラーは無い方がいい
で、改めて>>268を見てみると、「可読性」があってプレフィクスの間違いに気付いてはいるものの、
そもそも書く段でなんで間違えたのか、それが全く分からない
他人はおろか本人すらも自覚できない謎の理由でプレフィクスを間違えてる(これがヒューマンエラーなんだけどな)
なんで、後だしジャンケンだと、「プレフィクスが最初から無ければ、間違いも発生しえなかった」、とも言える
もしかすると、書く時に間違える/読む時に間違える の比率を考えると、ハンガリアン記法は書く時に間違えやすいが読むときに間違いにくい……のトレードオフなだけかもしれん
要するに、可読性と生産性のトレードオフだけなんじゃあねえのか?
それに、読む時のヒューマンエラーと書く時のヒューマンエラーをわざと混同してるのはいただけない
287デフォルトの名無しさん (ワッチョイ 8a6e-x4Or)
2018/02/25(日) 16:15:03.29ID:s5td7qK+0 void func(int a)
{
{
288デフォルトの名無しさん (ワッチョイ 8a6e-x4Or)
2018/02/25(日) 16:15:31.06ID:s5td7qK+0 void func(int a)
{
//aが何型かわからない
//アホかおまえは
}
{
//aが何型かわからない
//アホかおまえは
}
289デフォルトの名無しさん (ワッチョイ 8a6e-x4Or)
2018/02/25(日) 16:46:37.12ID:s5td7qK+0 template <typename T>
void func(T lpszA)
{
//lpszって書いてあるからTはLPSTR型だな
//アホかおまえは
}
void func(T lpszA)
{
//lpszって書いてあるからTはLPSTR型だな
//アホかおまえは
}
290デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/25(日) 19:14:43.19ID:4jIr3vvu0291デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/25(日) 19:15:39.42ID:4jIr3vvu0 ごめ
×:テンプレート批判論者
○:ハンガリアン批判論者
×:テンプレート批判論者
○:ハンガリアン批判論者
292デフォルトの名無しさん (ワッチョイ df7f-x4Or)
2018/02/25(日) 19:29:08.16ID:s+qaK1zS0 テンプレートに対してはハンガリアンは全くの無力だよなあ
一貫性の観点からやっぱりハンガリアンは無い方がいいわ
一貫性の観点からやっぱりハンガリアンは無い方がいいわ
293デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/25(日) 19:48:52.19ID:4jIr3vvu0 .>>290のレスを見てテンプレートの実体化時までハンガリアンが無力なことにされてはかないませんなあ…
294デフォルトの名無しさん (ワッチョイ 0637-rG1w)
2018/02/25(日) 20:11:05.52ID:fbPK05Px0 そもそも関数が長い場合は型情報を持たすのもありだよな
システムハンガリアンをやめさせようとして先に関数を短くしなきゃだめだなと追う結論に至って放置した
システムハンガリアンをやめさせようとして先に関数を短くしなきゃだめだなと追う結論に至って放置した
295デフォルトの名無しさん (ワッチョイ 8a6e-x4Or)
2018/02/25(日) 20:37:38.24ID:s5td7qK+0 //1万行の最長不倒関数を書く
//アホかおまえは
//アホかおまえは
296デフォルトの名無しさん (ワッチョイ 8a6e-x4Or)
2018/02/25(日) 21:00:14.67ID:s5td7qK+0 void func(int lpszA)
{
//lpszって書いてあるからLPSTR型だな
//アホかおまえは
}
{
//lpszって書いてあるからLPSTR型だな
//アホかおまえは
}
297デフォルトの名無しさん (ワッチョイ c4e3-x4Or)
2018/02/25(日) 21:58:30.83ID:qLuvVokt0 システムハンガリ理解してない人の例上げてね?
298デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/25(日) 22:45:03.97ID:4jIr3vvu0 >>295
「1画面に収まらない」を都合よく無視しないように
「1画面に収まらない」を都合よく無視しないように
299デフォルトの名無しさん (ワッチョイ 4634-gMjx)
2018/02/25(日) 23:43:59.89ID:yscCG2q60 システムハンガリアンはDWORDをintに型名変更するだけでその変数名全部終わるからなしかも一瞬で
300デフォルトの名無しさん
2018/02/25(日) 23:57:37.89 >>299
dwをiに置換するだけだからリファクタリングが楽っていう意味?
dwをiに置換するだけだからリファクタリングが楽っていう意味?
301デフォルトの名無しさん (ワッチョイ 4634-gMjx)
2018/02/26(月) 00:59:51.78ID:VDQLjiDS0 まったく逆だ
dwからiに全部置換していかないと変数名の意味を為さなくなるからシステムハンガリアンは愚かさ甚だしいと云うておる
dwからiに全部置換していかないと変数名の意味を為さなくなるからシステムハンガリアンは愚かさ甚だしいと云うておる
302デフォルトの名無しさん (ワッチョイ 4634-gMjx)
2018/02/26(月) 01:02:48.27ID:VDQLjiDS0 アンパンマン調で例えるなら型名変えるだけでメンテ百倍みたいな
303デフォルトの名無しさん (ワッチョイ 147e-x4Or)
2018/02/26(月) 01:10:40.33ID:jQ6YvoyL0 組み込み型はいいけどクラスはどうすんのさ
意味の分からないサフィックスを付けられても困るぞ
意味の分からないサフィックスを付けられても困るぞ
304デフォルトの名無しさん (ワッチョイ 4634-gMjx)
2018/02/26(月) 01:11:26.04ID:VDQLjiDS0 ハンガリアン!新しい型だよ!
有難う!デザパタ娘ちゃん!
メンテ百倍!ハンガリアン!
有難う!デザパタ娘ちゃん!
メンテ百倍!ハンガリアン!
305デフォルトの名無しさん (ワッチョイ 0637-rG1w)
2018/02/26(月) 01:55:04.49ID:4PPe6ndQ0 そもそもDWORDをintに変えることが滅多にない
306デフォルトの名無しさん (ワッチョイ 147e-x4Or)
2018/02/26(月) 02:10:59.71ID:jQ6YvoyL0 dwとか書かれてもDWORDの定義を知らないと意味不明だし
やるなら符号の有無とサイズが分かるように書かないと意味ないでしょ
やるなら符号の有無とサイズが分かるように書かないと意味ないでしょ
307デフォルトの名無しさん (ワッチョイ 8a05-x4Or)
2018/02/26(月) 04:56:46.87ID:lxlU26hn0 >>298
おまえは間違いなく1万行と書いた
その史実を誤魔化すことはできない
「ありえないという根拠は」という問いを反論として用いるのは
俺が「ありえない」と言った(事実と違うが)ことが
おまえが「ありうる」と思っているのと違ったからだろう
いずれにせよ「アホかおまえは」にふさわしいハチャメチャだな
おまえは間違いなく1万行と書いた
その史実を誤魔化すことはできない
「ありえないという根拠は」という問いを反論として用いるのは
俺が「ありえない」と言った(事実と違うが)ことが
おまえが「ありうる」と思っているのと違ったからだろう
いずれにせよ「アホかおまえは」にふさわしいハチャメチャだな
308デフォルトの名無しさん (ワッチョイ 769f-PnyW)
2018/02/26(月) 08:02:35.99ID:SPD4iDfM0 ポインタのpとか参照のrとかは今でも使ってる
309デフォルトの名無しさん
2018/02/26(月) 08:09:57.39 >>307
史実とか言っちゃうのって。。。
史実とか言っちゃうのって。。。
310デフォルトの名無しさん (ワッチョイ 520e-MTlB)
2018/02/26(月) 08:16:32.18ID:TvC1o7QC0311デフォルトの名無しさん (ワッチョイ 8a05-x4Or)
2018/02/26(月) 09:55:53.14ID:lxlU26hn0312デフォルトの名無しさん (ワッチョイ 8a05-x4Or)
2018/02/26(月) 09:56:14.50ID:lxlU26hn0 >>310
ニホンゴワカリマスカ?
ニホンゴワカリマスカ?
313デフォルトの名無しさん (ワッチョイ d023-MTlB)
2018/02/26(月) 10:44:04.77ID:U+kFnN5D0 ハード直叩きのドライバ屋はデータバスやレジスタの幅を間違えると大変だから
物理層の実装ではハンガリアン使うこともあるよ
物理層の実装ではハンガリアン使うこともあるよ
314デフォルトの名無しさん (アウアウカー Sa11-2orQ)
2018/02/26(月) 10:55:31.04ID:n/n1Eejna >>313
むしろそれはアプリケーションハンガリアンじゃね?
むしろそれはアプリケーションハンガリアンじゃね?
315デフォルトの名無しさん (スップ Sdc4-aBV2)
2018/02/26(月) 11:21:30.74ID:mt/mMzV6d 間違えると大変だからハンガリアンを使ってはならないんだよ
偽の情報に頼るんではなくて元を逐一確かめないと
偽の情報に頼るんではなくて元を逐一確かめないと
316デフォルトの名無しさん (ワッチョイ 2f93-0l3D)
2018/02/26(月) 11:33:14.68ID:yfGCkThX0 今勉強してるんだけどC++ではポインタを使わずに参照で書くのがデフォルトなの?
317デフォルトの名無しさん (ワッチョイ 520e-MTlB)
2018/02/26(月) 11:36:50.47ID:TvC1o7QC0318デフォルトの名無しさん (アウアウカー Sa11-2orQ)
2018/02/26(月) 11:38:09.46ID:n/n1Eejna >>316
ポインタも必要に応じて使うけど、メモリ管理の煩雑さとミスの危険性を避けるために参照やスマートポインタやコンテナ、イテレータなど他に適切な物がある時はなるべくそちらを使うのが流儀かな。
ポインタも必要に応じて使うけど、メモリ管理の煩雑さとミスの危険性を避けるために参照やスマートポインタやコンテナ、イテレータなど他に適切な物がある時はなるべくそちらを使うのが流儀かな。
319デフォルトの名無しさん (ワッチョイ 8a05-x4Or)
2018/02/26(月) 11:51:17.55ID:lxlU26hn0 >>316
デフォ・・・まあ、そう言えなくもないか
参照でもポインタでもどっちでもいい用途には参照
ポインタでしかできないことはNULLに++や絶対番地指定
参照でしかできないことは一時オブジェクトやコピコン類
デフォ・・・まあ、そう言えなくもないか
参照でもポインタでもどっちでもいい用途には参照
ポインタでしかできないことはNULLに++や絶対番地指定
参照でしかできないことは一時オブジェクトやコピコン類
320デフォルトの名無しさん (ワッチョイ ba23-k8Zo)
2018/02/26(月) 12:15:47.61ID:z/vehsiL0 書き込むときは参照ではなくポインタにしろと言ってた人がいた。
理由を聞いたら「なんか書き込んでる感がない」だった。
理由を聞いたら「なんか書き込んでる感がない」だった。
321デフォルトの名無しさん (ワッチョイ 8a05-x4Or)
2018/02/26(月) 12:17:18.65ID:lxlU26hn0 std::cin >> &a;
やだよ、こんなの
やだよ、こんなの
322デフォルトの名無しさん (ワッチョイ df7f-x4Or)
2018/02/26(月) 12:21:09.58ID:W3q5coR10 グーグル規約だと書き込む引数は参照ではなくポインタにしろってなってる
でも標準ライブラリが普通に参照で書き込んでるので意味ないかなと思う
でも標準ライブラリが普通に参照で書き込んでるので意味ないかなと思う
323デフォルトの名無しさん (スフッ Sd94-OThY)
2018/02/26(月) 13:05:03.30ID:LqmnPPXld やC++糞
324デフォルトの名無しさん (ワッチョイ 147e-x4Or)
2018/02/26(月) 13:30:49.55ID:jQ6YvoyL0 好きな方使えとしか言いようがない
ただ参照はnullポインタが無いという特性はある
ただ参照はnullポインタが無いという特性はある
325デフォルトの名無しさん (ワッチョイ ba23-k8Zo)
2018/02/26(月) 13:42:09.37ID:z/vehsiL0326デフォルトの名無しさん (ワッチョイ 2f93-0l3D)
2018/02/26(月) 13:44:00.32ID:yfGCkThX0 レスサンクス
cからだからポインタで書いちゃいそうだわ
cからだからポインタで書いちゃいそうだわ
327デフォルトの名無しさん (アウーイモ MM3a-QuQl)
2018/02/26(月) 18:25:47.85ID:aHz4HBvIM ローカルで宣言したunique_ptrを他のメソッドに渡してデータをつめたいばあいってどういう引数で渡せば良いの?
unique_ptr<Hoge> ptr(new Hoge);
hogehoge(ptr);
Hogehoge::hoge(const unique_ptr<Hoge>& ptr){
ptr->aaa = 123;
}
これでいける?
なんかウェブサイトみてると&&二つとかあったりするの見かけて混乱してきた
unique_ptr<Hoge> ptr(new Hoge);
hogehoge(ptr);
Hogehoge::hoge(const unique_ptr<Hoge>& ptr){
ptr->aaa = 123;
}
これでいける?
なんかウェブサイトみてると&&二つとかあったりするの見かけて混乱してきた
328デフォルトの名無しさん (ワッチョイ fae7-RzsP)
2018/02/26(月) 18:46:48.22ID:6OgFttId0 &&は所有権ごとぶん投げる時に使う
渡した後も呼び出し元で使うんだったらそれて合ってるぞ
渡した後も呼び出し元で使うんだったらそれて合ってるぞ
329デフォルトの名無しさん (ワッチョイ d0e8-z5Dr)
2018/02/26(月) 19:00:19.12ID:r2m2Cr000 >>327
それだったらunique_ptrじゃなくて参照渡せば良いだけじゃ
それだったらunique_ptrじゃなくて参照渡せば良いだけじゃ
330デフォルトの名無しさん (ワッチョイ 0a80-IMbs)
2018/02/26(月) 19:31:15.52ID:NcBRNf650 知らない間に、&& みたいな参照渡しもできた
Rust の所有権ムーブの事
Rust の所有権ムーブの事
331デフォルトの名無しさん (ワッチョイ 147e-x4Or)
2018/02/26(月) 19:58:16.47ID:jQ6YvoyL0 何年も前からある
332デフォルトの名無しさん (ワッチョイ 8610-QuQl)
2018/02/26(月) 21:01:42.73ID:k0ghrbBh0 所有権を渡すのってstd:move()だと思ってたんだけどconst &&でもいけるの??
333デフォルトの名無しさん (ワッチョイ 38eb-f0ks)
2018/02/26(月) 21:42:25.99ID:adcc2IaV0 C++17でstd::iteratorが非推奨ってなっているみたいだけど代わりに何使うの?
334デフォルトの名無しさん (ワッチョイ 0637-rG1w)
2018/02/26(月) 23:56:58.87ID:4PPe6ndQ0 []
335デフォルトの名無しさん (ワッチョイ 147e-x4Or)
2018/02/27(火) 00:00:22.09ID:o+FKgYKC0 >>333
自分で実装する
自分で実装する
336はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e66f-x4Or)
2018/02/27(火) 02:00:32.40ID:+XEdVvf40337はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e66f-x4Or)
2018/02/27(火) 02:10:59.44ID:+XEdVvf40 && は単純に右辺参照って意味しかないから、 rvalue を受け取れるってだけ。
だけど lvalue でもムーブしてぇってときは std::move で rvalue にキャストすんの。
だけど lvalue でもムーブしてぇってときは std::move で rvalue にキャストすんの。
338デフォルトの名無しさん (ワッチョイ 147e-x4Or)
2018/02/27(火) 02:19:45.35ID:o+FKgYKC0 そこら辺はめんどくさいからテンプレート使え
339デフォルトの名無しさん (ワッチョイ 8610-QuQl)
2018/02/28(水) 18:07:41.72ID:IZRayiSM0 右辺値参照とか難しいなー
最近ようやくC++11使えるようになったから全然いってることがわからん
最近ようやくC++11使えるようになったから全然いってることがわからん
340片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-HaFh)
2018/02/28(水) 18:34:51.95ID:jmOf6Upnd 右辺値参照が使えなかった頃は、std::swapでスピード最適化していた。ポインタとメモリー確保を含む構造体は、
単純にスワップしたり、単純にバイト単位コピーしたりするのはまずいことがある。
そういうときに、std::swapを使う。右辺値参照は、それよりちょっと速くて賢いが、テンプレート型を理解してないと多分理解できないと思われる。
単純にスワップしたり、単純にバイト単位コピーしたりするのはまずいことがある。
そういうときに、std::swapを使う。右辺値参照は、それよりちょっと速くて賢いが、テンプレート型を理解してないと多分理解できないと思われる。
341片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-HaFh)
2018/02/28(水) 18:43:18.32ID:jmOf6Upnd 右辺値参照の型はテンプレートを使った特殊な型だと考えるのが自然。
T&& === rvalue_ref<T>.
std::move(T&)はrvalue_ref<T>という型。
T&& === rvalue_ref<T>.
std::move(T&)はrvalue_ref<T>という型。
342片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-HaFh)
2018/02/28(水) 18:44:28.64ID:jmOf6Upnd 訂正。
std::move(T&)の戻り値はrvalue_ref<T>という型。
std::move(T&)の戻り値はrvalue_ref<T>という型。
343片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-HaFh)
2018/02/28(水) 19:01:47.21ID:jmOf6Upnd すみません、テキトーなことを書いたので、銃殺されます。
344はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e66f-x4Or)
2018/02/28(水) 19:18:07.29ID:7ezW7mFb0 実際のところヘッダファイルから std::move の定義を抜き出すとこんな感じ。
template<typename _Tp>
constexpr typename std::remove_reference<_Tp>::type&&
move(_Tp&& __t) noexcept {
return static_cast<typename std::remove_reference<_Tp>::type&&>(__t);
}
テンプレートの都合で面倒くさくなってるけど、実態としては static_cast してるだけ。
template<typename _Tp>
constexpr typename std::remove_reference<_Tp>::type&&
move(_Tp&& __t) noexcept {
return static_cast<typename std::remove_reference<_Tp>::type&&>(__t);
}
テンプレートの都合で面倒くさくなってるけど、実態としては static_cast してるだけ。
345片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-HaFh)
2018/02/28(水) 19:24:03.59ID:jmOf6Upnd そのstd::remove_reference<T>::typeはTから左辺値参照や右辺値参照をはずした型になるね。それに&&を付けるんだから、左辺値参照が右辺値参照になる。
346片山博文MZ ◆T6xkBnTXz7B0 (ワッチョイ a6b3-HaFh)
2018/02/28(水) 19:25:31.22ID:AZJp7LrB0 やはり、constexprやnoexceptを付けた方が性能がいいんだな。
347はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e66f-x4Or)
2018/02/28(水) 19:35:33.38ID:7ezW7mFb0 C++17 では noexcept は型の一部という扱いに変更された。
例外を投げないなら投げないと書いておかないと他のライブラリとの組合せで型エラーになったりすることもあるかもしれんぞ。
例外を投げないなら投げないと書いておかないと他のライブラリとの組合せで型エラーになったりすることもあるかもしれんぞ。
348片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-HaFh)
2018/02/28(水) 19:43:54.33ID:jmOf6Upnd やっぱ江添亮様ってスゲーや。
349デフォルトの名無しさん (ワッチョイ 147e-x4Or)
2018/02/28(水) 21:22:30.07ID:BlsGZA5I0 江添本にこの辺りのチートシートと問題集いれたら100部くらい売り上げ増えるのでは
350デフォルトの名無しさん (ワッチョイ eff2-x4Or)
2018/02/28(水) 21:27:43.47ID:LDTKKB+20 江添ってあれか。ニートの時にやることないからたまたま目についたC++の仕様書を読み込んでたら
いつの間にかすごく強くなったという、ホリランみたいな。
いつの間にかすごく強くなったという、ホリランみたいな。
351デフォルトの名無しさん (ワッチョイ 1651-x4Or)
2018/02/28(水) 21:32:34.60ID:eOQjYTv40 おまえそれをバカにできるのか?
仕事ってそういうもんだぜ
目の前の案件のために必死こいても付け焼き刃にできることは知れてるんだよ
「ヒマ」なときに遠くを見て投機的にコツコツ努力したことが
あとで花咲くことがあるし咲かないこともある
賭に勝った者を、降りたやつがバカにできるのか? え、おい
仕事ってそういうもんだぜ
目の前の案件のために必死こいても付け焼き刃にできることは知れてるんだよ
「ヒマ」なときに遠くを見て投機的にコツコツ努力したことが
あとで花咲くことがあるし咲かないこともある
賭に勝った者を、降りたやつがバカにできるのか? え、おい
352デフォルトの名無しさん (ワッチョイ 8abd-2pQG)
2018/02/28(水) 22:02:12.40ID:debsNNov0353デフォルトの名無しさん (ブーイモ MM5e-chUR)
2018/02/28(水) 22:22:45.57ID:n9jVMobsM >>352
outは**だろ
outは**だろ
354デフォルトの名無しさん (ワッチョイ f680-IMbs)
2018/02/28(水) 22:38:47.40ID:ugxprRf80 && は、Rust のmove の事。
所有権移転。移転元が空になる
基本的に数年は、ドワンゴ江添と共に、山ごもり!
江添が空海なら、漏れは最澄w
悟りを開くまで、空海・最澄の一問一答が、延々と続くw
所有権移転。移転元が空になる
基本的に数年は、ドワンゴ江添と共に、山ごもり!
江添が空海なら、漏れは最澄w
悟りを開くまで、空海・最澄の一問一答が、延々と続くw
355はちみつ餃子 ◆8X2XSCHEME (ワッチョイ e66f-x4Or)
2018/02/28(水) 23:03:26.56ID:7ezW7mFb0 rvalue reference 自体はムーブしねぇつってるだろ。
356デフォルトの名無しさん (ワッチョイ df34-CuRu)
2018/03/01(木) 02:40:44.97ID:Cta7ST2f0 &&は所有権付き参照オブジェクトのようなものだな
357デフォルトの名無しさん (ワッチョイ bfe7-s382)
2018/03/01(木) 07:05:17.46ID:/bb7E7Gp0 &&参照は「このオブジェクトもういらないからぶっ壊してもいいよ」というサイン
言うなれば肉屋へ行く馬車
野生のオブジェクトは誰に断る必要もないので勝手に連れてかれて解体される
家畜を渡す時は解体に同意するサイン(std::move())が必要
言うなれば肉屋へ行く馬車
野生のオブジェクトは誰に断る必要もないので勝手に連れてかれて解体される
家畜を渡す時は解体に同意するサイン(std::move())が必要
358デフォルトの名無しさん (アウーイモ MM2b-wIew)
2018/03/01(木) 07:13:49.75ID:YKLxBKOvM Fooクラスのunique_ptrがつまったvectorを作って、他クラスのメンバ変数にセットするときはどう渡すべき?
作った元ではもう使わないから所有権放棄していいとする
const参照渡しにして、渡された側でvectorの中身を全部std:move()して新しいvectorにつめるのが一番最初に思い浮かんだ
そんなことしなくても最近ここででてる、&&つけて渡してそのままセットすれば解決するのかな?
作った元ではもう使わないから所有権放棄していいとする
const参照渡しにして、渡された側でvectorの中身を全部std:move()して新しいvectorにつめるのが一番最初に思い浮かんだ
そんなことしなくても最近ここででてる、&&つけて渡してそのままセットすれば解決するのかな?
359デフォルトの名無しさん (ワッチョイ bfe7-s382)
2018/03/01(木) 07:20:14.18ID:/bb7E7Gp0 vectorを丸ごとmove付けてコンストラクタに渡せばいいよ
出来上がった後で渡したいならswapすればいい
出来上がった後で渡したいならswapすればいい
360デフォルトの名無しさん (アウーイモ MM2b-wIew)
2018/03/01(木) 08:22:01.82ID:YKLxBKOvM なるほどー
コードにするとこんな感じかな?
std::vector<std::unique_ptr>vec_hoge;
...
Hoge hoge;
hoge.setHoge(std:move(vec_hoge))
Hoge::setHoge(vector<unique_ptr>&& vec_hoge) {
this-> vec_hoge = vec_hoge;
}
コードにするとこんな感じかな?
std::vector<std::unique_ptr>vec_hoge;
...
Hoge hoge;
hoge.setHoge(std:move(vec_hoge))
Hoge::setHoge(vector<unique_ptr>&& vec_hoge) {
this-> vec_hoge = vec_hoge;
}
361デフォルトの名無しさん (ブーイモ MMcf-pwu8)
2018/03/01(木) 08:51:22.88ID:Z75vpagFM >>360
最後にmove必要
最後にmove必要
362はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/01(木) 08:54:17.19ID:1485DW7Q0 せやな。
rvalue reference は lvalue だぞ。
rvalue reference は lvalue だぞ。
363デフォルトの名無しさん (アウーイモ MM2b-wIew)
2018/03/01(木) 10:38:08.68ID:YKLxBKOvM ありがとう!勉強になりました
364デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/01(木) 22:06:37.33ID:fp7iC0tG0 >>353
ちげう
ちげう
365デフォルトの名無しさん (アウアウカー Sabb-5mf3)
2018/03/02(金) 07:10:33.20ID:GbvR6g/La noexceptにtrue,falseがある理由については
#include <type_traits>
template<typename T>
void test(T t)noexcept(is_unsigned<T>){
//Tの型がunsignedの時だけは例外は投げない
}
こういう事が出来ると書いてあったけど、c++17以降も問題なく使えるだろうか?
#include <type_traits>
template<typename T>
void test(T t)noexcept(is_unsigned<T>){
//Tの型がunsignedの時だけは例外は投げない
}
こういう事が出来ると書いてあったけど、c++17以降も問題なく使えるだろうか?
366デフォルトの名無しさん (ワッチョイ df52-m1UI)
2018/03/02(金) 07:15:24.27ID:bNTu0vGw0 is_unsigned_vだろ
なぜC++17以後で廃止になると思ったんだ?
なぜC++17以後で廃止になると思ったんだ?
367デフォルトの名無しさん (アウアウカー Sabb-5mf3)
2018/03/02(金) 07:38:40.59ID:GbvR6g/La stdも抜けてた。。。
廃止になるじゃなく面倒な事になりそうだと。
廃止になるじゃなく面倒な事になりそうだと。
368デフォルトの名無しさん (ワッチョイ df80-zeCZ)
2018/03/02(金) 08:07:40.62ID:mIGjbFX+0 unsigned は組み込み用だろ
0 〜 255 のカウンターなどで、無限にループする。
255の次に、0が来る
overflow にされると困る
0 〜 255 のカウンターなどで、無限にループする。
255の次に、0が来る
overflow にされると困る
369デフォルトの名無しさん (ブーイモ MMcf-pwu8)
2018/03/02(金) 08:51:13.35ID:Du7whmdSM >>368
組み込みでなくても極々普通に使うし、標準ライブラリ使ってれば知らぬ間に使ってる。
組み込みでなくても極々普通に使うし、標準ライブラリ使ってれば知らぬ間に使ってる。
370デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/02(金) 09:14:23.17ID:vziGgrtU0 size_t
371デフォルトの名無しさん (ワッチョイ df52-m1UI)
2018/03/02(金) 09:29:49.65ID:bNTu0vGw0 それを言うなら
uintptr_t
uintptr_t
372デフォルトの名無しさん (スプッッ Sd7f-yS6n)
2018/03/02(金) 12:01:58.77ID:D+SIA0G1d 普段は uint_xxt と size_t しか使わんわ
int と ptr あんまり相互に変換しないし
int と ptr あんまり相互に変換しないし
373デフォルトの名無しさん (マクド FFbb-x7J7)
2018/03/02(金) 22:27:40.22ID:3pZ6Fb9JF visualstudio2017 でスタックトレースがしたいのですができません。
最初はBoost.StackTraceで試みたのですがMSVCでは行数やファイル名の出力が非対応で
アドレスまでしか取れませんでした。
次にWinAPIを使って解決させようとしたのですがこれもうまく行きません。
SymGetSymFromAddrを使うとどうやってもエラー126が帰ってきてしまいます。
以下のプログラムがVisualstudio2017で動作している人はいないでしょうか?
ttps://github.com/shive/blogpost/blob/master/20130918-stacktrace/main.cpp
最初はBoost.StackTraceで試みたのですがMSVCでは行数やファイル名の出力が非対応で
アドレスまでしか取れませんでした。
次にWinAPIを使って解決させようとしたのですがこれもうまく行きません。
SymGetSymFromAddrを使うとどうやってもエラー126が帰ってきてしまいます。
以下のプログラムがVisualstudio2017で動作している人はいないでしょうか?
ttps://github.com/shive/blogpost/blob/master/20130918-stacktrace/main.cpp
374デフォルトの名無しさん (ワッチョイ 7f95-A/Ur)
2018/03/02(金) 23:27:18.83ID:KYEHMUiK0 スタートレックと空目した
375デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/02(金) 23:40:43.96ID:vziGgrtU0 >>373
こうなった
---- BEGIN BACKTRACE ----
1 : 0x00e76873 : Project1 : mycode::foo : c:\users\\source\repos\project1\project1\main.cpp(116) :
backtrace();
2 : 0x00e76513 : Project1 : mycode::bar : c:\users\\source\repos\project1\project1\main.cpp(120) :
foo();
3 : 0x00e76563 : Project1 : mycode::baz : c:\users\\source\repos\project1\project1\main.cpp(124) :
bar();
4 : 0x00e76b33 : Project1 : mycode::hoge : c:\users\\source\repos\project1\project1\main.cpp(128) :
baz();
5 : 0x00e76f0d : Project1 : main : c:\users\\source\repos\project1\project1\main.cpp(134) : try {
6 : 0x00e7870e : Project1 : invoke_main : f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(78) : ?
7 : 0x00e785b0 : Project1 : __scrt_common_main_seh : f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(283) : ?
---- END BACKTRACE ----
こうなった
---- BEGIN BACKTRACE ----
1 : 0x00e76873 : Project1 : mycode::foo : c:\users\\source\repos\project1\project1\main.cpp(116) :
backtrace();
2 : 0x00e76513 : Project1 : mycode::bar : c:\users\\source\repos\project1\project1\main.cpp(120) :
foo();
3 : 0x00e76563 : Project1 : mycode::baz : c:\users\\source\repos\project1\project1\main.cpp(124) :
bar();
4 : 0x00e76b33 : Project1 : mycode::hoge : c:\users\\source\repos\project1\project1\main.cpp(128) :
baz();
5 : 0x00e76f0d : Project1 : main : c:\users\\source\repos\project1\project1\main.cpp(134) : try {
6 : 0x00e7870e : Project1 : invoke_main : f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(78) : ?
7 : 0x00e785b0 : Project1 : __scrt_common_main_seh : f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(283) : ?
---- END BACKTRACE ----
376片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/02(金) 23:47:44.16ID:7K8TE86Qd377373 (ワイモマー MMff-cxM0)
2018/03/03(土) 01:05:16.48ID:7bxI8Ps/M378デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/03(土) 01:52:28.21ID:e0EB+SLu0 >>377
Windows10で実行
ライブラリは追加したのと
このFileNameがchar*でmsvcでは通らないから適当に文字列のバッファを作って渡した
>94 line.FileName = "?";
Windows10で実行
ライブラリは追加したのと
このFileNameがchar*でmsvcでは通らないから適当に文字列のバッファを作って渡した
>94 line.FileName = "?";
379373 (マクド FFbb-x7J7)
2018/03/03(土) 07:43:32.07ID:MjEj/kk+F >>378
自分はWindows7&VisualStudio2017なのですが
dbghelp.lib、dgbhelp.hを探すと以下の場所にあるのでWin10でしか対応していないのかなと…
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\x86
C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um
C:\Program Files (x86)\Windows Kitsの下には8.1と10
という名前のフォルダがあるのでOSの番号ぽいです。
dbghelp.dllならそこらじゅうにあるのでLoadModule関数で呼べばいけるのかも
自分はWindows7&VisualStudio2017なのですが
dbghelp.lib、dgbhelp.hを探すと以下の場所にあるのでWin10でしか対応していないのかなと…
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\x86
C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um
C:\Program Files (x86)\Windows Kitsの下には8.1と10
という名前のフォルダがあるのでOSの番号ぽいです。
dbghelp.dllならそこらじゅうにあるのでLoadModule関数で呼べばいけるのかも
380373 (マクド FFbb-x7J7)
2018/03/03(土) 08:51:25.52ID:MjEj/kk+F VisualStudio Installerで構成の変更をしようとすると
'Windows XP Support for C++'というのがあって
これがWindows7用のSDKらしいです。(どんな名前の付け方だ…)
これをインストールするとめでたくdbghelp.libとdbghelp.hが追加されるので
それでコンパイルしようとすると
#include <dbghelp.h>
とかくだけでコンパイルエラーになってしまいました。
エラー C2760 構文エラー: トークン '識別子' は予期されておらず、'型指定子' が予期されています scratch c:\program files (x86)\microsoft sdks\windows\v7.1a\include\objbase.h 239
Windows10を買うかVisualStudio2015をインストールするかしかないのかもしれません;;
'Windows XP Support for C++'というのがあって
これがWindows7用のSDKらしいです。(どんな名前の付け方だ…)
これをインストールするとめでたくdbghelp.libとdbghelp.hが追加されるので
それでコンパイルしようとすると
#include <dbghelp.h>
とかくだけでコンパイルエラーになってしまいました。
エラー C2760 構文エラー: トークン '識別子' は予期されておらず、'型指定子' が予期されています scratch c:\program files (x86)\microsoft sdks\windows\v7.1a\include\objbase.h 239
Windows10を買うかVisualStudio2015をインストールするかしかないのかもしれません;;
381デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/03(土) 09:17:35.93ID:iGrPHQq30 >>380
Visual Studio 2017 スレの919あたりから話題になっているけど、
VS2017 の Windows 旧バージョンサポートはおかしいみたい。
2015と同じツールセット、SDKを用いても動作が違う。
2015をインストールするのがいい気がする。
参考
Visual Studio 2017 Part4 ・
http://mevius.5ch.net/test/read.cgi/tech/1509244956/
https://www.visualstudio.com/ja/vs/older-downloads/
Visual Studio 2017 スレの919あたりから話題になっているけど、
VS2017 の Windows 旧バージョンサポートはおかしいみたい。
2015と同じツールセット、SDKを用いても動作が違う。
2015をインストールするのがいい気がする。
参考
Visual Studio 2017 Part4 ・
http://mevius.5ch.net/test/read.cgi/tech/1509244956/
https://www.visualstudio.com/ja/vs/older-downloads/
382デフォルトの名無しさん (スップ Sdff-b+My)
2018/03/03(土) 10:29:47.52ID:eUUf6Fhxd コンパイラを作っているんですが、char 10bit short 18bitの時はsizeofはいくつを返せばいいんですか?
383デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/03(土) 10:36:52.34ID:/0Rk5gcF0 >>382
アドレス単位を返す。ワードアドレッシングなら通常全て1になる
アドレス単位を返す。ワードアドレッシングなら通常全て1になる
384デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/03(土) 10:42:04.53ID:iGrPHQq30 メモリ上のレイアウト次第
その18ビットを隙間だらけでchar8個分のメモリに置いてるなら8だし、
詰めて2個分で置いてるなら2
その18ビットを隙間だらけでchar8個分のメモリに置いてるなら8だし、
詰めて2個分で置いてるなら2
385デフォルトの名無しさん (ワッチョイ df7f-nnrn)
2018/03/03(土) 10:51:46.74ID:sKvL+uoJ0 sizeof(char)は必ず1じゃなかったっけ?
386デフォルトの名無しさん
2018/03/03(土) 12:49:02.99 sizeofが小数を返しちゃいけないって誰が決めたの?🙄
387はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/03(土) 13:15:05.21ID:uc6Z/AdW0 >>386
仕様。
C99 だと 7.17 に size_t は sizeof 演算子の結果の符号無し整数型って書いてある。
C++11 だと 5.3.3 に sizeof 演算子の返却値の型は size_t って書いてあって、
18.2 に size_t は符号無し整数型って書いてある。
仕様。
C99 だと 7.17 に size_t は sizeof 演算子の結果の符号無し整数型って書いてある。
C++11 だと 5.3.3 に sizeof 演算子の返却値の型は size_t って書いてあって、
18.2 に size_t は符号無し整数型って書いてある。
388デフォルトの名無しさん (ワッチョイ df52-m1UI)
2018/03/03(土) 13:20:00.43ID:Yc5zIgYv0 sizeof(bool) == 0.125 であって欲しいのかw
389はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/03(土) 13:43:14.93ID:uc6Z/AdW0 どうせ汎整数昇格で int になることばかりなので、
アドレス単位以下の小さなオブジェクトにする意味なんてないよ。
大きな配列で扱いたいときは std::bitset が有るし。
アドレス単位以下の小さなオブジェクトにする意味なんてないよ。
大きな配列で扱いたいときは std::bitset が有るし。
390デフォルトの名無しさん
2018/03/03(土) 14:56:24.32 >>387
ありがとう🤣
ありがとう🤣
391デフォルトの名無しさん (ワッチョイ dff9-5eZn)
2018/03/03(土) 15:45:51.52ID:+GZAkR500 >>389
もしsizeofが小数を返したら汎整数昇格は適用されないんじゃない?
もしsizeofが小数を返したら汎整数昇格は適用されないんじゃない?
392デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/03(土) 16:09:32.75ID:e0EB+SLu0 使用者が混乱するような仕様はちょっと
393デフォルトの名無しさん (ワッチョイ df8f-obH6)
2018/03/03(土) 18:28:41.77ID:OIzMcqKj0 この板に書いてあることがほとんどわかっていないようなクソ素人ですみませんがちょっとお聞きしたいことがあります。
Windows 7でOpenCVをTDM-GCCにて動かしたいと思っているのですが、どなたかこの設定で動かされている方など居られますでしょうか?
もしくは素直にVisualStudioなど使ったほうが良いのでしょうか?
昨日からあれこれ試しているのですがまったく動かないです。
Windows 7でOpenCVをTDM-GCCにて動かしたいと思っているのですが、どなたかこの設定で動かされている方など居られますでしょうか?
もしくは素直にVisualStudioなど使ったほうが良いのでしょうか?
昨日からあれこれ試しているのですがまったく動かないです。
394片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/03(土) 19:01:36.20ID:ZgUZF4A1d >>393
俺ならパッケージマネージャがあるMSYS2+MinGW使うよ。
パッケージマネージャがないTDM-GCCなら、まず、OpenCVをビルドして、リンクできるようにしないといけない。
まあ、めんどうくさい訳で。
俺ならパッケージマネージャがあるMSYS2+MinGW使うよ。
パッケージマネージャがないTDM-GCCなら、まず、OpenCVをビルドして、リンクできるようにしないといけない。
まあ、めんどうくさい訳で。
395片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/03(土) 19:37:06.06ID:ZgUZF4A1d 初心者はVSやるとよろし。NuGetというパッケージマネージャがあるよ。
396デフォルトの名無しさん (ワッチョイ df8f-obH6)
2018/03/03(土) 20:12:29.49ID:OIzMcqKj0 片山様
レスありがとうございます。
そうですね、VSは重いという理由で避けていましたがやはりまずはちゃんと王道からやっていこうと思います。
慣れたらソースからビルドもしてみたいですが、まずはOpenCVであれこれしたいのでやりやすい環境で頑張りたいと思います。
ありがとうございました。
レスありがとうございます。
そうですね、VSは重いという理由で避けていましたがやはりまずはちゃんと王道からやっていこうと思います。
慣れたらソースからビルドもしてみたいですが、まずはOpenCVであれこれしたいのでやりやすい環境で頑張りたいと思います。
ありがとうございました。
397はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/03(土) 20:37:52.59ID:uc6Z/AdW0 VS の統合開発環境を外したツールセットだけの SDK もあったはず。
でもまあ初心者は統合開発環境があった方がいいってのは同意だな。
でもまあ初心者は統合開発環境があった方がいいってのは同意だな。
398デフォルトの名無しさん (アウアウカー Sabb-5mf3)
2018/03/03(土) 21:19:46.86ID:oo1zjTPVa C++の文字列、u16やu32stringとか乱立してるけど今時TCHARとか使わないでしょうか?
string,wstring,u16string,u32string...どれか決め打ち?
string,wstring,u16string,u32string...どれか決め打ち?
399デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/03(土) 21:37:46.21ID:iGrPHQq30 主に使ってるライブラリ/フレームワークに合わせれば?
何でもいいなら multibyte で utf-8 一択だろう
ucs2 (16bit) にしても ucs4 (32bit) にしてもどうせ
合字とかで1コードポイント1文字にならないから意味ないし
コンテナは string でも何でも好きなものを
何でもいいなら multibyte で utf-8 一択だろう
ucs2 (16bit) にしても ucs4 (32bit) にしてもどうせ
合字とかで1コードポイント1文字にならないから意味ないし
コンテナは string でも何でも好きなものを
400はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/03(土) 21:52:22.75ID:uc6Z/AdW0 どうやろな?
Windows だと API が UTF-16 前提だからそれで揃えるってのは悪くない選択だと思うし。
Windows だと API が UTF-16 前提だからそれで揃えるってのは悪くない選択だと思うし。
401デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/03(土) 21:55:03.34ID:e0EB+SLu0 >>398
TCHARはcharとwchar_tをvisual studioのプロジェクトの設定で切り替えてtypedefしてる型だ
マイクロソフトのライブラリの一部
u16stringとu32stringはstd::basic_string<char16_t>とstd::basic_string<char32_t>のエイリアス
UTF-16とUTF-32の文字列を扱うクラスで標準ライブラリの一部
そもそもどっちかというものではない
std::basic_string<TCHAR>とか使ってもいい
TCHARはcharとwchar_tをvisual studioのプロジェクトの設定で切り替えてtypedefしてる型だ
マイクロソフトのライブラリの一部
u16stringとu32stringはstd::basic_string<char16_t>とstd::basic_string<char32_t>のエイリアス
UTF-16とUTF-32の文字列を扱うクラスで標準ライブラリの一部
そもそもどっちかというものではない
std::basic_string<TCHAR>とか使ってもいい
402デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/03(土) 22:02:34.74ID:i5AAIiVZ0 OpenCVのビルドぐらいCMakeでGUIでできる
403デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/03(土) 22:07:02.05ID:i5AAIiVZ0 >std::basic_string<TCHAR>とか使ってもいい
ほんとそれ
ていうかWin32APIでサポートされるうちはやっぱマルチバイトが無難
ほんとそれ
ていうかWin32APIでサポートされるうちはやっぱマルチバイトが無難
404デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/03(土) 22:12:10.73ID:q1dNIabI0 ShiftJisなんて廃止して、UTF8に統一してしまえば良かったよね
405デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/03(土) 22:19:12.96ID:/0Rk5gcF0 UTFはソートのコストが高いから痛し痒しだけどね
SJISはその点は優秀かと
SJISはその点は優秀かと
406デフォルトの名無しさん (ワッチョイ df4c-jQxp)
2018/03/03(土) 22:38:49.13ID:pbvBV+5A0 Windows10はutf8モードにできたような
407はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/03(土) 22:56:38.78ID:uc6Z/AdW0 文字コードを統一したところでロケールの切替えはどうせ必要なわけだし、
内部的な処理が UNICODE に統一されたので良しとするしかなかろ。
内部的な処理が UNICODE に統一されたので良しとするしかなかろ。
408デフォルトの名無しさん (ワッチョイ 4781-atej)
2018/03/03(土) 23:43:29.67ID:q1dNIabI0 utf8に統一したら、ロケールの切替って表示する文字列の言語を決める位の意味しか無いのではないかな
異なる言語の文字列でもそのまま字化けせずに表示出来た方が都合が良いように思うけど
異なる言語の文字列でもそのまま字化けせずに表示出来た方が都合が良いように思うけど
409はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/04(日) 00:38:00.37ID:R9gQD4Ga0 Windows はもう 20 年以上前から Unicode 化はやってるんだってば。
UNICODE 版の API を正しく使う限り文字化けしない。
フォントの設定とかで化けることはあるかもしれんけど、
それも今はフォントリンクとかでおおよそ上手いこと処理してまうしな。
UNICODE 化できていない今までに作られたカスなアプリが消し去れないし、
カスなアプリのために ANSI 版の API (の挙動を制御するためのコードページの切替えの仕組み)
は残しておかなきゃならないけど、
Unicode への統一そのものは出来てるから満足するしかない。
っていう話ね。
UNICODE 版の API を正しく使う限り文字化けしない。
フォントの設定とかで化けることはあるかもしれんけど、
それも今はフォントリンクとかでおおよそ上手いこと処理してまうしな。
UNICODE 化できていない今までに作られたカスなアプリが消し去れないし、
カスなアプリのために ANSI 版の API (の挙動を制御するためのコードページの切替えの仕組み)
は残しておかなきゃならないけど、
Unicode への統一そのものは出来てるから満足するしかない。
っていう話ね。
410デフォルトの名無しさん (ワッチョイ bfe7-s382)
2018/03/04(日) 00:59:55.95ID:LharAyAs0 だったらVisualStudioで作ったソースファイルのデフォルトがShiftJIS固定なのをそろそろなんとかしてくれよ
411はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/04(日) 01:01:33.87ID:R9gQD4Ga0 せやな。
412デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/04(日) 01:07:55.85ID:BtVPmkEs0 LinuxとかのシステムコールもUnicode化されたら考えるわアデューノシ
413デフォルトの名無しさん (ワッチョイ 079b-esDK)
2018/03/04(日) 01:14:01.78ID:fY1aJvVU0 >>410
2017で治ったんじゃなかったか
2017で治ったんじゃなかったか
414デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/04(日) 01:15:23.20ID:BtVPmkEs0 だいたいwchar_tとかcharの倍容量を食うじゃん?
2が3になるとかならまだしも1が2になるというのは精神的にインパクトがデカイ
L"Hello World!"のバイナリをダンプしてみたらトラウマを抱え込むレヴェル
というのもあるし他環境とのソースコード共通化も視野に入れる場合やっぱマルチバイトしか…
2が3になるとかならまだしも1が2になるというのは精神的にインパクトがデカイ
L"Hello World!"のバイナリをダンプしてみたらトラウマを抱え込むレヴェル
というのもあるし他環境とのソースコード共通化も視野に入れる場合やっぱマルチバイトしか…
415デフォルトの名無しさん (ワッチョイ dfe1-9jF/)
2018/03/04(日) 01:35:20.32ID:pARrwnK20 WindowsのUNICODE版APIはUTF-8と相性が悪いからクソ
416はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/04(日) 01:39:19.42ID:R9gQD4Ga0 せやろか?
内部表現として使う文には UTF-16 って良いと思うけどな。
UTF-8 との間なら変換コストも大したことないし。
内部表現として使う文には UTF-16 って良いと思うけどな。
UTF-8 との間なら変換コストも大したことないし。
417デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/04(日) 02:20:02.75ID:8pLLmBBd0 >>416
iOS / macOS / Windows / Java と多くのプラットフォームの
API で文字列としてUTF-16 が使われてるから割と使うけど、
近年多用される絵文字とかが全然1文字1符号にならんので
ロジックを基準する上ではUTF-8より便利ってわけでもない。
文字列の処理を描くときは合字以外は1文字1符号になるUCS4 の方が良い。
iOS / macOS / Windows / Java と多くのプラットフォームの
API で文字列としてUTF-16 が使われてるから割と使うけど、
近年多用される絵文字とかが全然1文字1符号にならんので
ロジックを基準する上ではUTF-8より便利ってわけでもない。
文字列の処理を描くときは合字以外は1文字1符号になるUCS4 の方が良い。
418デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/04(日) 02:23:18.11ID:FSOQNU6I0 なぜ世界中の頭脳を集結させても完璧な文字コードは作れないのか
419デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/04(日) 02:28:31.88ID:BtVPmkEs0 x86アーキテクチャーがRISC-Vに置き換わったら考えるわノシ
420デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/04(日) 02:42:05.74ID:BtVPmkEs0 ていうかコルモゴロフ複雑性が計算可能関数だったら考えるわノシ
421デフォルトの名無しさん (ワッチョイ df34-CuRu)
2018/03/04(日) 02:53:03.62ID:QKjmCs/V0 韓国がUNICODEにすごい文字数予約済みにしてあるとか聞いたことある
422デフォルトの名無しさん (ワッチョイ 7feb-Vmra)
2018/03/04(日) 03:02:28.08ID:ymM0nha90 あの言語動的に文字生成でもしないと無駄多杉だろ
423はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/04(日) 03:02:39.39ID:R9gQD4Ga0424デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/04(日) 03:56:38.94ID:8pLLmBBd0 >>423
UTF-16 だとサロゲートペアが出てくるからマルチバイトがマルチワードになるだけ
ucs4 だとそれが要らなくて符合とコードポイントが1:1対応になるんだよ。
何年か前まではサロゲートペア?なにそれおいしいの?でも済んでたけど
今の時代それは無理だし
UTF-16 だとサロゲートペアが出てくるからマルチバイトがマルチワードになるだけ
ucs4 だとそれが要らなくて符合とコードポイントが1:1対応になるんだよ。
何年か前まではサロゲートペア?なにそれおいしいの?でも済んでたけど
今の時代それは無理だし
425デフォルトの名無しさん (ワッチョイ 8723-WWZl)
2018/03/04(日) 04:09:09.92ID:8pLLmBBd0 要は
utf-8、utf-16 → 1符合 ≠ 1コードポイント ≠ 1文字
ucs4 → 1符合 = 1コードポイント ≠ 1文字
だから完全自作の文字列処理ではucs4が楽だよという意見でした
テキストなんてたいしてメモリ食わないしね
おしまい
utf-8、utf-16 → 1符合 ≠ 1コードポイント ≠ 1文字
ucs4 → 1符合 = 1コードポイント ≠ 1文字
だから完全自作の文字列処理ではucs4が楽だよという意見でした
テキストなんてたいしてメモリ食わないしね
おしまい
426デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/04(日) 04:09:59.70ID:FSOQNU6I0 charset_cast<utf_8>()みたいなの欲しい
427はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/04(日) 08:42:48.43ID:R9gQD4Ga0 おっと、 u16string のイテレータはサロゲートペアは解決してくれないのか。
まあそれも小さなラッパを作ればどうとでもなる。
まあそれも小さなラッパを作ればどうとでもなる。
428デフォルトの名無しさん (ワッチョイ bfe7-s382)
2018/03/04(日) 09:34:29.91ID:LharAyAs0 UTF16でサロゲートでガチャガチャやるくらいならUTF8でちゃんとやった方が実り多いし
そんなんやりたくないならUTF32使えばいいし
中途半端だよねUTF16
そんなんやりたくないならUTF32使えばいいし
中途半端だよねUTF16
429デフォルトの名無しさん (ワッチョイ df6e-m1UI)
2018/03/04(日) 09:38:06.05ID:ZPPAxORI0 ワイドのようで実はマルチ
430デフォルトの名無しさん (アウアウカー Sabb-5mf3)
2018/03/04(日) 10:55:23.96ID:kJ02m0gha どこかでみたけど歴史的にはutf32やutf16よりutf8が新しいんだろ?
431デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/04(日) 12:59:59.04ID:hIgSiiXH0 オリジナルのXEROXのコードへの先祖返りではないかな?
432デフォルトの名無しさん (マクド FFbb-x7J7)
2018/03/04(日) 14:09:11.62ID:GeBypOU0F visualstudio2017でBoost.Testを試したいのですがうまく行きません。
Nugetでboost-vc141をインストールしてテストプロジェクトをWindowsコンソールアプリケーションとして
追加し、Helloworld的なテストプログラムを書きました。
ビルドは通るのですが、テストエクスプローラーにテストが認識されません。
#include "stdafx.h"
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(my_boost_test) {
const int x = 1;
BOOST_CHECK(x == 1);
BOOST_CHECK(x != 1);
}
VisualStudio2017のバージョンは15.5.7で
「Boost.Testのテスト アダプター」はデフォルトでインストールされるようになっていたので
インストールされています。
Nugetでboost-vc141をインストールしてテストプロジェクトをWindowsコンソールアプリケーションとして
追加し、Helloworld的なテストプログラムを書きました。
ビルドは通るのですが、テストエクスプローラーにテストが認識されません。
#include "stdafx.h"
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE(my_boost_test) {
const int x = 1;
BOOST_CHECK(x == 1);
BOOST_CHECK(x != 1);
}
VisualStudio2017のバージョンは15.5.7で
「Boost.Testのテスト アダプター」はデフォルトでインストールされるようになっていたので
インストールされています。
433デフォルトの名無しさん (ワッチョイ a7b3-m1UI)
2018/03/06(火) 00:41:37.37ID:MSLc23us0 標準ライブラリを前方宣言にすることに意味ってありますか?
434デフォルトの名無しさん (ワッチョイ 677f-m1UI)
2018/03/06(火) 00:45:13.63ID:jqoml9jL0 メイヤーズは普通にインクルードしろって言ってた
435デフォルトの名無しさん (ワッチョイ dfcb-pwu8)
2018/03/06(火) 01:45:01.96ID:RorZBCxf0 >>434
それどこに書いてあるの?
それどこに書いてあるの?
436デフォルトの名無しさん (アウアウオー Sa9f-JHL/)
2018/03/06(火) 06:16:57.53ID:HL6NWtm0a newした配列がいつの間にか解放されてて、
プログラムの最後でdeleteすると必ずアクセスエラーで落ちるんですが、
newは勝手に解放されることあるんですか?
プログラムの最後でdeleteすると必ずアクセスエラーで落ちるんですが、
newは勝手に解放されることあるんですか?
437デフォルトの名無しさん (ワッチョイ df33-k3ZN)
2018/03/06(火) 07:19:59.92ID:18YefqDd0 >>436 どっかで未定義動作に堕ちてるならそんな結果になることもあるだろね。
438デフォルトの名無しさん (ワッチョイ bfe7-s382)
2018/03/06(火) 07:39:27.47ID:YXZKPZh60 ・どっかでメモリの取り扱い間違えてnewの管理情報を踏んづけて壊してる
・unique_ptrやshared_ptr、その他スマートポインタ的なものに理解せずに渡してる
多分このどっちか
・unique_ptrやshared_ptr、その他スマートポインタ的なものに理解せずに渡してる
多分このどっちか
439デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/06(火) 07:56:08.66ID:4Jw7uGdF0 ポインタがnewで帰ってきたアドレスと違う可能性
440デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/06(火) 11:04:41.26ID:PuW1uuBL0441デフォルトの名無しさん (ワッチョイ df60-k3ZN)
2018/03/06(火) 13:48:19.62ID:xvhpcg6j0442デフォルトの名無しさん (ワッチョイ df60-k3ZN)
2018/03/06(火) 13:50:16.42ID:xvhpcg6j0443デフォルトの名無しさん (ワッチョイ 7fcc-wl/W)
2018/03/06(火) 15:12:07.82ID:p6GeX8860 ファイル分割をしてみたく、プログラムをヘッダファイルとcppファイルに分割しようと挑戦したのですがよくわからないエラーが出まくります・・
プログラム超初心者なので凄い初歩的な部分を間違えているかもしれません・・・
エラーですが、ヘッダファイルの方で
'vector':'std'のメンバーではありません
'vector':定義されていない識別子です
'string':定義されていない識別子です
'cv': 識別子がクラス名でも名前空間名でもありません。
'Mat':定義されていない識別子です
'ofstream':'std'のメンバーではありません
'ofstream':定義されていない識別子です
みたいなエラーが出ます。
ヘッダファイルは、二重インクルードガードと関数のプロトタイプ宣言しかしていないのですが
上のようにそ、のプロトタイプ宣言の型とかに対してのエラーが出まくります
何かヘッダファイルに付けたほうがいいのでしょうか?
分かる方がいたら、教えていただけますでしょうか。
ちなみに、visual studio で作業していて、プロジェクトはコンソールアプリケーションで作っています。
もしかして、自分でmakefileとかを作る必要があるのでしょうか?
プログラム超初心者なので凄い初歩的な部分を間違えているかもしれません・・・
エラーですが、ヘッダファイルの方で
'vector':'std'のメンバーではありません
'vector':定義されていない識別子です
'string':定義されていない識別子です
'cv': 識別子がクラス名でも名前空間名でもありません。
'Mat':定義されていない識別子です
'ofstream':'std'のメンバーではありません
'ofstream':定義されていない識別子です
みたいなエラーが出ます。
ヘッダファイルは、二重インクルードガードと関数のプロトタイプ宣言しかしていないのですが
上のようにそ、のプロトタイプ宣言の型とかに対してのエラーが出まくります
何かヘッダファイルに付けたほうがいいのでしょうか?
分かる方がいたら、教えていただけますでしょうか。
ちなみに、visual studio で作業していて、プロジェクトはコンソールアプリケーションで作っています。
もしかして、自分でmakefileとかを作る必要があるのでしょうか?
444片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/06(火) 15:14:49.26ID:W0MQjqG0d ヘッダーの方で
#include <vector>
などが足りないのでは。
ヘッダーは、自己完結にした方がいいらしい。
#include <vector>
などが足りないのでは。
ヘッダーは、自己完結にした方がいいらしい。
445デフォルトの名無しさん (ワッチョイ 7fcc-1LYG)
2018/03/06(火) 15:40:05.75ID:p6GeX8860 よく見たら、自分の参考にしていたページでヘッダファイルのincludeは最小限に抑えると書いていました…
てっきり、ヘッダファイルではincludeはしないものなのかと…
最小限というのは、エラーが回避できるstdio.hとかの最小限のファイルだけヘッダでincludeして、他のmath.hなどはcppファイルでincludeすればいい感じですか?
てっきり、ヘッダファイルではincludeはしないものなのかと…
最小限というのは、エラーが回避できるstdio.hとかの最小限のファイルだけヘッダでincludeして、他のmath.hなどはcppファイルでincludeすればいい感じですか?
446片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-dixK)
2018/03/06(火) 15:50:38.20ID:W0MQjqG0d 最小限というのは、コンパイル時間、ビルド時間を短縮するためだから、小さなプログラムでは気にする必要はない。
cppとhppで#includeを分けるというのはよくあることだ。
cppとhppで#includeを分けるというのはよくあることだ。
447デフォルトの名無しさん (ワッチョイ 7fcc-1LYG)
2018/03/06(火) 16:05:55.81ID:p6GeX8860 ありがとうございます!
448デフォルトの名無しさん (ワッチョイ 6793-fJrP)
2018/03/06(火) 16:16:08.19ID:r6wtBatS0449デフォルトの名無しさん
2018/03/06(火) 17:54:41.92 Cソースのincludeの位置にヘッダファイルの中身を貼り付けたときにコンパイルできなきゃだめ
たぶんCソースの中で他のincludeよりも前に新しいヘッダファイルのincludeを書いてるんだろう
たぶんCソースの中で他のincludeよりも前に新しいヘッダファイルのincludeを書いてるんだろう
450デフォルトの名無しさん (ワッチョイ 7fcc-1LYG)
2018/03/06(火) 18:15:37.24ID:p6GeX8860451デフォルトの名無しさん (アウアウオー Sa9f-JHL/)
2018/03/06(火) 22:17:21.07ID:i8Fah5dFa >>438
前者っぽいでした
前者っぽいでした
452デフォルトの名無しさん (アウアウウー Sa2b-wl/W)
2018/03/06(火) 23:34:50.60ID:pZOZvbRza C++のリファレンスとかで[first,last)というふうに左右で括弧が違う表記があるんだけど、これはIteratorに関しての表記ですか?
453デフォルトの名無しさん (ワッチョイ df60-k3ZN)
2018/03/06(火) 23:42:46.07ID:xvhpcg6j0454デフォルトの名無しさん (ワッチョイ 07eb-n++H)
2018/03/06(火) 23:43:09.96ID:ey0B6I8l0455デフォルトの名無しさん (ワッチョイ a7b3-m1UI)
2018/03/06(火) 23:47:04.41ID:MSLc23us0 https://ttsuki.github.io/styleguide/cppguide.ja.html#Forward_Declarations
前方宣言ってしたほうがいいのか、しないほうがいいのかどっちなんですかね
前方宣言ってしたほうがいいのか、しないほうがいいのかどっちなんですかね
456デフォルトの名無しさん (アウアウウー Sa2b-wl/W)
2018/03/06(火) 23:50:38.84ID:pZOZvbRza >>453,454 数学でしたか!勉強になります。
457デフォルトの名無しさん (ワッチョイ 2723-SQy9)
2018/03/07(水) 00:29:35.52ID:+JS1hm360 mutex g_Mtx;
int g_Val = 0;
int Func( int A, int B )
{
int Val = A * B;
lock_guard<mutex> Lock( g_Mtx );
return g_Val = Val;
}
void ThreadFunc0()
{
int Val = Func( 2, 3 );
// Valを参照する処理
}
void ThreadFunc1()
{
lock_guard<mutex> Lock( g_Mtx );
// g_Valを参照する処理
}
上記のようなスレッド関数が非同期に実行されるとき、
Func()はスレッドセーフ(g_Val書き換え中に参照されない)でしょうか?
(1)lock_guard<mutex>によるミューテックスロック
(2)g_Valの書き換え
(3)戻り値を呼び出し元スレッドにコピー(あるいはムーブ)
(4)lock_guard<mutex>がスコープから外れアンロック
というシーケンスを期待しています。
int g_Val = 0;
int Func( int A, int B )
{
int Val = A * B;
lock_guard<mutex> Lock( g_Mtx );
return g_Val = Val;
}
void ThreadFunc0()
{
int Val = Func( 2, 3 );
// Valを参照する処理
}
void ThreadFunc1()
{
lock_guard<mutex> Lock( g_Mtx );
// g_Valを参照する処理
}
上記のようなスレッド関数が非同期に実行されるとき、
Func()はスレッドセーフ(g_Val書き換え中に参照されない)でしょうか?
(1)lock_guard<mutex>によるミューテックスロック
(2)g_Valの書き換え
(3)戻り値を呼び出し元スレッドにコピー(あるいはムーブ)
(4)lock_guard<mutex>がスコープから外れアンロック
というシーケンスを期待しています。
458デフォルトの名無しさん (ワッチョイ dfbd-lEE9)
2018/03/07(水) 00:29:47.60ID:6+ILModc0 endならともかくlastは区間内の最後の要素なんじゃ…
459デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 10:09:55.97ID:ukyKg6LAa 基本的な質問なのですが、以下のプログラムがエラーになるのはなぜでしょうか?
char* pc = "abc";
pc[0] = 'z';
cout << pc << endl;
以下のプログラムでは意図通りに動きます。
char ac[] = { 'a', 'b', 'c', '\0' };
cout << ac << endl;
ac[0] = 'z';
cout << ac << endl;
char* pc = "abc";
pc[0] = 'z';
cout << pc << endl;
以下のプログラムでは意図通りに動きます。
char ac[] = { 'a', 'b', 'c', '\0' };
cout << ac << endl;
ac[0] = 'z';
cout << ac << endl;
460はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 10:14:51.80ID:TWOfgg7C0 >>459
上は変数 pc はリテラル文字列の先頭を指すポインタ。
下の変数 ac は配列で、それを文字列 "abc" で初期化するって意味。
リテラルの破壊は未定義。
破壊しないことをあてにして破壊不可能なセクション (メモリ領域) に配置されたりすることもあるので、アクセスエラーが生じる。
あくまで未定義だから出来ちゃうこともあるし、コンパイラオプションで制御できたりもするけど、基本的にはあかんやつ。
上は変数 pc はリテラル文字列の先頭を指すポインタ。
下の変数 ac は配列で、それを文字列 "abc" で初期化するって意味。
リテラルの破壊は未定義。
破壊しないことをあてにして破壊不可能なセクション (メモリ領域) に配置されたりすることもあるので、アクセスエラーが生じる。
あくまで未定義だから出来ちゃうこともあるし、コンパイラオプションで制御できたりもするけど、基本的にはあかんやつ。
461デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 10:30:06.22ID:ylRgY7un0462デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 10:35:31.71ID:ukyKg6LAa463デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 11:10:02.03ID:ukyKg6LAa すみません、また、ベーシックな質問です。
char* pc1 = 1; → エラー
char* pc2 = NULL; → OK
char* pc3 = 0; → OK
なぜ、2番目と3番目はOKなのでしょうか?
char* pc1 = 1;
がエラーになるのは、 int 型の値で char* 型の変数を初期化できないからだとすれば、
char* pc3 = 0;
もエラーになると考えることもできると思います。
char* pc1 = 1; → エラー
char* pc2 = NULL; → OK
char* pc3 = 0; → OK
なぜ、2番目と3番目はOKなのでしょうか?
char* pc1 = 1;
がエラーになるのは、 int 型の値で char* 型の変数を初期化できないからだとすれば、
char* pc3 = 0;
もエラーになると考えることもできると思います。
464はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 11:10:26.68ID:TWOfgg7C0 >>462
Python なんか知らんがな。
Python の immutable は Python の immutable であって、それが C++ の何物かであったりはしないよ。
C++ のリテラルを破壊した結果は未定義というのは C++ のリテラルを破壊した結果は未定義という規則であるだけ。
似て感じられたとしても一対一に対応付くような単純なものではないので、
背景にあるメカニズムを理解せずに翻訳して理解しようとするような方法はお勧めできない。
Python なんか知らんがな。
Python の immutable は Python の immutable であって、それが C++ の何物かであったりはしないよ。
C++ のリテラルを破壊した結果は未定義というのは C++ のリテラルを破壊した結果は未定義という規則であるだけ。
似て感じられたとしても一対一に対応付くような単純なものではないので、
背景にあるメカニズムを理解せずに翻訳して理解しようとするような方法はお勧めできない。
465デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 11:14:31.86ID:ukyKg6LAa466はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 11:22:08.82ID:TWOfgg7C0 >>465
書き忘れてたけど、 C++ の文字列リテラルの型は const char[] なので、
const 付きでないポインタに渡すと単純に型が合わなくてエラーになるはず。
C だと型に const が付いてないのに破壊するのは未定義ってことになっててあまりにもクソだったから改められた。
書き忘れてたけど、 C++ の文字列リテラルの型は const char[] なので、
const 付きでないポインタに渡すと単純に型が合わなくてエラーになるはず。
C だと型に const が付いてないのに破壊するのは未定義ってことになっててあまりにもクソだったから改められた。
467はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 11:32:07.41ID:TWOfgg7C0 >>463
0 はポインタに型変換可能で、型変換した結果が空ポインタと等しいことが保証されてる特別な存在。
(ビットパターンが等しいとは限らないことには注意が必要。)
互換であることが保証されているので、処理系によっては
#define NULL 0
として定義していることもある。
余談だが、これはオーバーロードされた関数でうっかりしやすいので気を付けた方がいい。
たとえば関数 foo が以下のような型でオーバーロードされている場合、
void foo(int);
void foo(int*);
これを
foo(NULL)
と呼び出すと void foo(int) が呼び出されたりする。
今ではヌルポインタを表すキーワード nullptr が用意されたので、
NULL はあまり使わない方が良い。
0 はポインタに型変換可能で、型変換した結果が空ポインタと等しいことが保証されてる特別な存在。
(ビットパターンが等しいとは限らないことには注意が必要。)
互換であることが保証されているので、処理系によっては
#define NULL 0
として定義していることもある。
余談だが、これはオーバーロードされた関数でうっかりしやすいので気を付けた方がいい。
たとえば関数 foo が以下のような型でオーバーロードされている場合、
void foo(int);
void foo(int*);
これを
foo(NULL)
と呼び出すと void foo(int) が呼び出されたりする。
今ではヌルポインタを表すキーワード nullptr が用意されたので、
NULL はあまり使わない方が良い。
468デフォルトの名無しさん (アウアウウー Sa2b-m1UI)
2018/03/07(水) 12:03:25.28ID:ukyKg6LAa469デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 12:29:38.25ID:ylRgY7un0 >>468
それはISO/IEC14882:1998の4.2で許されていたことに由来する
その後ISO/IEC14882:2011のC.1.1で廃止されたが
古いソースを通すために故意に違反状態のままにしている
それはISO/IEC14882:1998の4.2で許されていたことに由来する
その後ISO/IEC14882:2011のC.1.1で廃止されたが
古いソースを通すために故意に違反状態のままにしている
470デフォルトの名無しさん (アウアウカー Sabb-5mf3)
2018/03/07(水) 16:15:14.65ID:nnB4Kxzea c++の規約に違反にしないためには一度変数に代入する必要があるという事?
471はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 16:24:01.54ID:TWOfgg7C0 オプションで指定できるんじゃね?
俺は GCC を使ってるから知らんけど。
俺は GCC を使ってるから知らんけど。
472デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 16:29:51.37ID:ylRgY7un0 違う
char const* cc;
cc = "abc"; //完全に合法
char* pc;
pc = cc; //不適格
pc = "abc"; //CとC++98では非推奨、C++11以後では不適格
pc = &"abc"[0]; //左辺値変形でこう解釈されていて
非constへのポインタに、constへのポインタを代入することになり、
暗黙のconst外しにあたるので、C++11が正論
pc = const_cast<char*>("abc"); //C++11以後ではこう書く
char const* cc;
cc = "abc"; //完全に合法
char* pc;
pc = cc; //不適格
pc = "abc"; //CとC++98では非推奨、C++11以後では不適格
pc = &"abc"[0]; //左辺値変形でこう解釈されていて
非constへのポインタに、constへのポインタを代入することになり、
暗黙のconst外しにあたるので、C++11が正論
pc = const_cast<char*>("abc"); //C++11以後ではこう書く
473デフォルトの名無しさん
2018/03/07(水) 17:54:06.02474デフォルトの名無しさん (ワッチョイ df80-zeCZ)
2018/03/07(水) 18:18:25.20ID:TnxtYBSc0475はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 18:49:53.33ID:TWOfgg7C0476デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 20:52:49.95ID:ylRgY7un0477デフォルトの名無しさん (スップ Sdff-WWZl)
2018/03/07(水) 22:07:54.67ID:eXkgxxlqd 純粋仮想関数と関連付けてはいないだろう
それはともかくとして
char * p = 7-7; // no error
class T {
virtual void f() = 7-7; // error
};
となる気がするので言ってることは合ってるか
それはともかくとして
char * p = 7-7; // no error
class T {
virtual void f() = 7-7; // error
};
となる気がするので言ってることは合ってるか
478デフォルトの名無しさん (ワッチョイ 5f7e-m1UI)
2018/03/07(水) 22:10:57.06ID:NKcGF/Sn0 C言語でNULLが0をdefineしたものだったというだけだろ
479デフォルトの名無しさん (スップ Sdff-WWZl)
2018/03/07(水) 22:12:59.22ID:eXkgxxlqd C言語では ((void*)0) だった気がする
480デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 22:34:03.79ID:ylRgY7un0481デフォルトの名無しさん (スップ Sdff-WWZl)
2018/03/07(水) 22:41:42.97ID:eXkgxxlqd いや疑問も呈していないし否定しているわけでもないのに当然と言われてもな…
482デフォルトの名無しさん (ワッチョイ e75b-m1UI)
2018/03/07(水) 22:52:11.20ID:ylRgY7un0 じゃあ何のために、7-7とか言い出したんだ?
483はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 23:02:40.75ID:TWOfgg7C0484はちみつ餃子 ◆8X2XSCHEME (ワッチョイ bf6f-m1UI)
2018/03/07(水) 23:12:03.15ID:TWOfgg7C0 >>483
と、思って調べてたんだけど、 C++ だと確実にあかんようだけど C だとアリなのかもしれない。
と、思って調べてたんだけど、 C++ だと確実にあかんようだけど C だとアリなのかもしれない。
485デフォルトの名無しさん (ワッチョイ 078a-Jyeh)
2018/03/07(水) 23:58:27.20ID:/Jrz1mw60 offsetof()がどう実装されているかやね
486デフォルトの名無しさん (ワッチョイ 6a33-hn8E)
2018/03/08(木) 02:18:11.16ID:BQ11IIJi0487はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 666f-uQtz)
2018/03/08(木) 03:31:21.90ID:+04GXVK30 おっ、こんな基本的なことで変更が入ってたのか。
でも当然といえば当然の処置よな。
でも当然といえば当然の処置よな。
488デフォルトの名無しさん (ワッチョイ e6e7-frl3)
2018/03/08(木) 06:41:46.04ID:DSeYC6Qd0 Cの無意味な汚いゴミが掃除されるのは良いことだ
489デフォルトの名無しさん (ワッチョイ 7f23-6rgV)
2018/03/08(木) 07:33:41.79ID:dmEui5aT0490デフォルトの名無しさん (ワッチョイ 2a8f-HFNi)
2018/03/08(木) 18:35:02.35ID:uuOHCrug0 C++の勉強+機械学習も勉強しようとVisual Studio 2017でtiny-dnnを用いたいのですが、tiny-dnn内でコンパイルエラーが発生します。
具体的にはxcontainer.hpp内でC3203というエラーが頻発したり、feedfoward_layer.hppではC2760というエラーが発生したりしています。
環境はWindows 7でVisual Studio 2017 communityです。
プロジェクトはwindowsデスクトップアプリケーションを用いています。
tiny-dnnのインクルードはプロパティのインクルードディレクトリに追加しています。
どなたか心当たりのある方がいらっしゃれば教えていただけると嬉しいです。
具体的にはxcontainer.hpp内でC3203というエラーが頻発したり、feedfoward_layer.hppではC2760というエラーが発生したりしています。
環境はWindows 7でVisual Studio 2017 communityです。
プロジェクトはwindowsデスクトップアプリケーションを用いています。
tiny-dnnのインクルードはプロパティのインクルードディレクトリに追加しています。
どなたか心当たりのある方がいらっしゃれば教えていただけると嬉しいです。
491デフォルトの名無しさん (スプッッ Sd2a-dsCQ)
2018/03/08(木) 19:27:19.96ID:i2S5Knpdd linux windows両対応のコードを考えている最中の質問です
unsigned int型の変数xの32bitに、char型の配列y[4]の8bit×4を当て込みたいです
y[0]から順にxの先頭ビットに入れたいのだけど
そういう時はどのようなコードになるのでしょうか
符号の問題で単純に24bitシフト+16bitシフト...みたいなことをすると期待の値にならないときが存在してます
unsigned int型の変数xの32bitに、char型の配列y[4]の8bit×4を当て込みたいです
y[0]から順にxの先頭ビットに入れたいのだけど
そういう時はどのようなコードになるのでしょうか
符号の問題で単純に24bitシフト+16bitシフト...みたいなことをすると期待の値にならないときが存在してます
492デフォルトの名無しさん (アウアウカー Sa7b-ccCq)
2018/03/08(木) 19:50:56.79ID:2k5PL6f/a unionでどう?
493デフォルトの名無しさん (スッップ Sd8a-6rgV)
2018/03/08(木) 20:26:39.82ID:FhiFltVyd >>491
シフトする前にunsigned charにキャストする
シフトする前にunsigned charにキャストする
494デフォルトの名無しさん (スッップ Sd8a-6rgV)
2018/03/08(木) 20:29:17.36ID:FhiFltVyd496デフォルトの名無しさん (ワッチョイ caaf-+ocK)
2018/03/09(金) 11:50:12.37ID:XHk1xHdH0 ヘッダーファイルの関数定義から関数ポインタをtypedefする事は可能ですか?
C++98辺りのコンパイラです。
C++98辺りのコンパイラです。
497はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 666f-uQtz)
2018/03/09(金) 12:25:38.00ID:nl8HCt1x0498デフォルトの名無しさん (スップ Sd2a-O8QP)
2018/03/09(金) 12:57:58.47ID:zqzgOSq4d テンプレート使えないかな?
499デフォルトの名無しさん (ワッチョイ caaf-J0+d)
2018/03/09(金) 13:06:17.52ID:XHk1xHdH0 出来ませんか。ありがとう。
再定義が面倒だったので楽したいだけだったんですけどね。
再定義が面倒だったので楽したいだけだったんですけどね。
500はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 666f-uQtz)
2018/03/09(金) 13:35:32.12ID:nl8HCt1x0 >>498
その手があったか。
でも C++98 で自動で推論させようとするとヘルパー関数を使う必要があるじゃろ。
意味のないオブジェクト生成 (最適化で消えるかもしれんけど) がださい感じはするよね。
その手があったか。
でも C++98 で自動で推論させようとするとヘルパー関数を使う必要があるじゃろ。
意味のないオブジェクト生成 (最適化で消えるかもしれんけど) がださい感じはするよね。
501デフォルトの名無しさん (ドコグロ MM8a-3fsH)
2018/03/09(金) 19:06:34.98ID:CekgNpjOM502デフォルトの名無しさん
2018/03/09(金) 22:17:46.30 >>496
マクロ駆使すれば
TYPEDEF_FUNC_DECL(なんちゃら);
FUNC_DEF(かんちゃら)
{
return;
}
みたいな書き方できないのかな?
なんちゃらは識別名と戻り値と引数
かんちゃらは識別名を指定するイメージ
マクロ駆使すれば
TYPEDEF_FUNC_DECL(なんちゃら);
FUNC_DEF(かんちゃら)
{
return;
}
みたいな書き方できないのかな?
なんちゃらは識別名と戻り値と引数
かんちゃらは識別名を指定するイメージ
503デフォルトの名無しさん (ワッチョイ 0b9f-uQtz)
2018/03/09(金) 23:46:50.00ID:yn7GHiyb0504デフォルトの名無しさん (ワッチョイ 4abd-RZSe)
2018/03/09(金) 23:57:54.33ID:5+PoAx/E0 >>491
xの先頭ビットとはMSBなのかLSBなのか
xの先頭ビットとはMSBなのかLSBなのか
505デフォルトの名無しさん (スップ Sd2a-6rgV)
2018/03/10(土) 00:45:01.61ID:8ENKFfsbd メモリ上でのレイアウトとかもあるのでuint8_t経由でのシフトがいい
クロックが(メモリアクセスが問題にならない程)低くてシフトが遅いマイクロプロセッサは別
クロックが(メモリアクセスが問題にならない程)低くてシフトが遅いマイクロプロセッサは別
506デフォルトの名無しさん
2018/03/10(土) 04:49:25.72507デフォルトの名無しさん (ワッチョイ 6a34-e70/)
2018/03/10(土) 06:32:30.15ID:Tg3hDFxK0 >>491
先頭ビットって32ビット目のことか?
先頭ビットって32ビット目のことか?
508デフォルトの名無しさん (ワッチョイ 0b9f-RK0z)
2018/03/10(土) 17:21:32.19ID:a2p+alti0 >>506
それが必要になるかどうかは場合による。
それが必要になるかどうかは場合による。
510デフォルトの名無しさん
2018/03/10(土) 19:22:25.29 >unsigned int型の変数xの32bitに、char型の配列y[4]の8bit×4を当て込みたいです
>y[0]から順に
っていう要件だから、ホストバイトオーダーがビッグエンディアンかリトルエンディアンか分からない以上は常にntohlを付けるべき
>y[0]から順に
っていう要件だから、ホストバイトオーダーがビッグエンディアンかリトルエンディアンか分からない以上は常にntohlを付けるべき
511デフォルトの名無しさん
2018/03/10(土) 19:24:15.74 char y[4] = { 0x12, 0x34, 0x56, 0x78 };
unsignd in x = 0x12345678;
これを等価にしたいという意味だろうから。
unsignd in x = 0x12345678;
これを等価にしたいという意味だろうから。
512デフォルトの名無しさん (ワッチョイ fb93-Ni5c)
2018/03/10(土) 21:52:35.38ID:My21AM/A0 独習c++終わりそうなんだが次によむべき本とかある?
>>512
https://mevius.5ch.net/test/read.cgi/tech/1493844476/312
あと STL の教科書、これもC++11以前のもの
https://www.amazon.co.jp/dp/4881357786/
https://mevius.5ch.net/test/read.cgi/tech/1493844476/312
あと STL の教科書、これもC++11以前のもの
https://www.amazon.co.jp/dp/4881357786/
514デフォルトの名無しさん (ワッチョイ 8af9-G5w4)
2018/03/10(土) 22:09:22.02ID:Tk41qGXE0 本ばかり読まず実践しよう
515デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/10(土) 22:09:43.95ID:lWictyCS0 >>512
cpprefjp
cpprefjp
516デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/10(土) 22:28:49.18ID:tBgkA+tH0 プログラミング言語C++とかどうやろ
517デフォルトの名無しさん (ワッチョイ fb93-Ni5c)
2018/03/10(土) 22:50:35.99ID:My21AM/A0 ありがとうございます
ひとまず>>513の本にしてみます
ひとまず>>513の本にしてみます
518デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/11(日) 00:41:56.08ID:6KlfnVLZ0 そういえば最新版のEffective STLみたいな本って無いのか?
519デフォルトの名無しさん (ワッチョイ 6a34-e70/)
2018/03/11(日) 00:53:03.16ID:Bd/2u4u/0 あると思うが訳者がへたくそで右辺値左辺値あたり意味ワカランかったぞ
520デフォルトの名無しさん (ワッチョイ 6a34-e70/)
2018/03/11(日) 00:57:27.74ID:Bd/2u4u/0 その辺りの参考にするなら下手な日本語文献探るよりか英文そのまま読んだ方がいい希ガス
なんでもかんでも日本語訳してあるとほんと意味ワカランから
なんでもかんでも日本語訳してあるとほんと意味ワカランから
521デフォルトの名無しさん (ワッチョイ 7323-Ik1A)
2018/03/11(日) 01:11:03.65ID:n48SUKtd0 cpprefjpのstd::min_elementとstd::max_elementの例文が間違ってるので誰か直してください。
自分はGitHubのアカウント持ってないので編集できません。
https://cpprefjp.github.io/reference/algorithm/min_element.html
https://cpprefjp.github.io/reference/algorithm/max_element.html
誤:return a > b;
正:return a < b;
自分はGitHubのアカウント持ってないので編集できません。
https://cpprefjp.github.io/reference/algorithm/min_element.html
https://cpprefjp.github.io/reference/algorithm/max_element.html
誤:return a > b;
正:return a < b;
522デフォルトの名無しさん (ワッチョイ 0b9f-uQtz)
2018/03/11(日) 01:22:57.30ID:ry5KQfC80 unsigned int x;
char y[4];
.
.
.
x = ((y[0] & 0xff) << 24) | ((y[1] & 0xff) << 16) | ((y[2] & 0xff) << 8) | (y[3] & 0xff);
char y[4];
.
.
.
x = ((y[0] & 0xff) << 24) | ((y[1] & 0xff) << 16) | ((y[2] & 0xff) << 8) | (y[3] & 0xff);
523デフォルトの名無しさん (ワッチョイ 6a80-csLy)
2018/03/11(日) 01:34:50.04ID:P1lOCLpn0 Scott Meyers
Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)、2014
Effective Modern C++ ―C++11/14プログラムを進化させる42項目、2015
Effective C++ は、昔の本のリバイバルかな?
内容が新しいかどうかまでは、分からないけど
Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)、2014
Effective Modern C++ ―C++11/14プログラムを進化させる42項目、2015
Effective C++ は、昔の本のリバイバルかな?
内容が新しいかどうかまでは、分からないけど
524デフォルトの名無しさん (スップ Sd2a-A/UC)
2018/03/11(日) 08:34:37.66ID:XWEx9Mlwd テンプレートを使ったメタプログラムの有用性が分からん。コンパイル時処理で定数の階乗を計算してるけど実行時に値を変えれないなら、答えをベタ書きすればいいだけでは?
525デフォルトの名無しさん (アウアウカー Sa7b-7AdS)
2018/03/11(日) 08:43:14.65ID:zMqNV6vza その値をベタ書きする手間をコンパイラにまかせることが出来るのが利点だと思うよ。
526デフォルトの名無しさん (スップ Sd2a-A/UC)
2018/03/11(日) 08:48:18.87ID:XWEx9Mlwd 3の階乗を、tmpするより6とタイプした方が早いだろ
527デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/11(日) 09:03:15.99ID:6KlfnVLZ0 >>526
3ならいいけど10の階乗は?15の階乗は?21の階乗は?
それは整数型で表現できるか?
それは何桁になるのか?
適切な型をどうやって選ぶのか?
その値を静的な配列のサイズにしたいが数値を変えるたびに電卓で計算はしたくない
ならばfactorial<N>::valueと表現できれば便利ではないか
ということ
3ならいいけど10の階乗は?15の階乗は?21の階乗は?
それは整数型で表現できるか?
それは何桁になるのか?
適切な型をどうやって選ぶのか?
その値を静的な配列のサイズにしたいが数値を変えるたびに電卓で計算はしたくない
ならばfactorial<N>::valueと表現できれば便利ではないか
ということ
528デフォルトの名無しさん (ワッチョイ fb7f-uQtz)
2018/03/11(日) 09:03:17.33ID:0BygLdlM0 その3という数値が別のファイルの特定の値に依存してる場合もあるし
529デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/11(日) 09:08:13.99ID:6KlfnVLZ0 意地悪するのはこの辺にしておいて
それはメタプログラミングでこいういうこともできるよ程度のものにすぎない
テンプレートメタプログラミングとはテンプレートを使ってソースコードを生成することだ
ソースコードを作るためのプログラミングだと思ってくれてかまわない
一般的な目的としてはジェネリックプログラミングを実現するために使われる
標準ライブラリではvectorからchoronoやtupleまでテンプレートメタプログラミングありきの設計になっている
それはメタプログラミングでこいういうこともできるよ程度のものにすぎない
テンプレートメタプログラミングとはテンプレートを使ってソースコードを生成することだ
ソースコードを作るためのプログラミングだと思ってくれてかまわない
一般的な目的としてはジェネリックプログラミングを実現するために使われる
標準ライブラリではvectorからchoronoやtupleまでテンプレートメタプログラミングありきの設計になっている
530デフォルトの名無しさん (アウアウカー Sa7b-7AdS)
2018/03/11(日) 09:08:56.54ID:zMqNV6vza 値が小さいうちはそうかもしれんが16の階乗とか値が大きくなってもベタ書きが良い?
ちなみにconstexprが使えるc++11以降の話と考えてOK?
ちなみにconstexprが使えるc++11以降の話と考えてOK?
531デフォルトの名無しさん (ワッチョイ e6e7-frl3)
2018/03/11(日) 10:19:34.71ID:i1Cv6XBY0 階乗の例はいい例とは言えんな
TMPで操作したいのはメインは型の方だからな
値も出来るよって例が階乗なだけで
TMPで操作したいのはメインは型の方だからな
値も出来るよって例が階乗なだけで
532デフォルトの名無しさん (ワッチョイ 6ab3-3fsH)
2018/03/11(日) 10:40:47.13ID:z1FVyjSJ0533デフォルトの名無しさん (アウアウカー Sa7b-7AdS)
2018/03/11(日) 10:50:57.85ID:zMqNV6vza そんな貴方にtemplate+constexpr(c++14以降)
534デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/11(日) 10:58:38.38ID:6KlfnVLZ0 >>532
頑張って古代人用のコンパイラ作ってくれ
頑張って古代人用のコンパイラ作ってくれ
535デフォルトの名無しさん (ワッチョイ 6ab3-3fsH)
2018/03/11(日) 11:03:02.47ID:z1FVyjSJ0536デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/11(日) 11:13:25.26ID:6KlfnVLZ0 >>535
現代の言語でジェネリクスをサポートするのは一般的
テンプレートをこねくり回して整数演算をするのはおかしいという意味なら、普通の構文で書けるconstexprが追加されたからそっちを使うように
現代の言語でジェネリクスをサポートするのは一般的
テンプレートをこねくり回して整数演算をするのはおかしいという意味なら、普通の構文で書けるconstexprが追加されたからそっちを使うように
537デフォルトの名無しさん (ワッチョイ 4abd-RZSe)
2018/03/11(日) 11:58:27.43ID:TvwI/h8S0 テンプレートで再帰ができたらナア…('A`)
538デフォルトの名無しさん (ワッチョイ 4abd-RZSe)
2018/03/11(日) 12:00:06.04ID:TvwI/h8S0 とわいいつつ、実はC++のテンプレートはチューリング完全になってしまっていた(らしい
ttps://cpplover.blogspot.jp/2013/10/blog-post_20.html
ttps://cpplover.blogspot.jp/2013/10/blog-post_20.html
539デフォルトの名無しさん (ドコグロ MM8a-3fsH)
2018/03/11(日) 12:05:49.26ID:93lmuZEGM >>536
costexprで階乗書いてみてから言えよ
costexprで階乗書いてみてから言えよ
540デフォルトの名無しさん (ワッチョイ e6e7-frl3)
2018/03/11(日) 16:36:05.55ID:i1Cv6XBY0 constexpr unsigned long long factorial(int n){
unsigned long long r=1;
for(int i=1;i<=n;++i){r*=i;}
return r;
}
うん、簡単だね!
unsigned long long r=1;
for(int i=1;i<=n;++i){r*=i;}
return r;
}
うん、簡単だね!
541デフォルトの名無しさん (ワッチョイ 6a34-e70/)
2018/03/11(日) 16:41:07.00ID:Bd/2u4u/0 毎回毎回コンパイラが計算するのか
542デフォルトの名無しさん (ワッチョイ 4acb-dpuX)
2018/03/11(日) 17:05:53.05ID:6zDmjp+70 たまにソースコードを見て、あ、この数字なんだっけって考えるよりも
10000回コンパイルさせるほうが早いと思うよ
10000回コンパイルさせるほうが早いと思うよ
543デフォルトの名無しさん (ワッチョイ 7e32-uQtz)
2018/03/11(日) 17:18:40.81ID:Dtt3qpb50 マジックナンバーの本質
544片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd8a-f9jl)
2018/03/11(日) 17:51:32.86ID:4ez4tjCrd >>540
オーバーフローのチェックがないからやり直し。
オーバーフローのチェックがないからやり直し。
545デフォルトの名無しさん (ワッチョイ e6e7-frl3)
2018/03/11(日) 18:36:06.03ID:i1Cv6XBY0 はーい
constexpr unsigned long long unsafe_factorial(int n){
unsigned long long r=1;
for(int i=1;i<=n;++i){r*=i;}
return r;
}
constexpr int min_factorialable(){
for(int i=1;;++i){
if(unsafe_factorial(i) > unsafe_factorial(i+1)){ return i; }
}
}
constexpr unsigned long long factorial(int n){
if (n < 0 || n > min_factorialable()) { return 0; }
return unsafe_factorial(n);
}
constexpr unsigned long long unsafe_factorial(int n){
unsigned long long r=1;
for(int i=1;i<=n;++i){r*=i;}
return r;
}
constexpr int min_factorialable(){
for(int i=1;;++i){
if(unsafe_factorial(i) > unsafe_factorial(i+1)){ return i; }
}
}
constexpr unsigned long long factorial(int n){
if (n < 0 || n > min_factorialable()) { return 0; }
return unsafe_factorial(n);
}
546デフォルトの名無しさん (ワッチョイ 2fe3-uQtz)
2018/03/11(日) 18:40:21.07ID:i3q5YI3y0 コンパイルエラーになるほうがいいなぁ
547片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd8a-f9jl)
2018/03/11(日) 19:45:19.23ID:4ez4tjCrd static_assert使え。
548デフォルトの名無しさん (スップ Sd2a-A/UC)
2018/03/11(日) 20:16:22.23ID:XWEx9Mlwd >>529
実行時計算で答え算出してそれを貼った方が楽じゃね?
実行時計算で答え算出してそれを貼った方が楽じゃね?
549デフォルトの名無しさん (ワッチョイ 8af9-G5w4)
2018/03/11(日) 21:15:39.44ID:ezoYy+fr0 >>548
それで事足りるケースならそれでいいよ
それで事足りるケースならそれでいいよ
550デフォルトの名無しさん (ワッチョイ fb7f-uQtz)
2018/03/11(日) 21:19:50.46ID:0BygLdlM0 >>548
なんでそんなめんどくさくてミスしそうな方法をチョイスするんだよ
なんでそんなめんどくさくてミスしそうな方法をチョイスするんだよ
551デフォルトの名無しさん
2018/03/12(月) 01:21:50.18 >>548
計算&書き換え手順をマニュアル化して、何十種類の仕向け別にバージョンアップの度に人海戦術で計算&書き換え&コードレビュー&テストするんですね、わかります
計算&書き換え手順をマニュアル化して、何十種類の仕向け別にバージョンアップの度に人海戦術で計算&書き換え&コードレビュー&テストするんですね、わかります
552デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/12(月) 05:00:24.40ID:kBVT8YZa0 min_factorialable() は、階乗を正しく計算できる最大の値を返す
constexprな関数(コンパイル時にint定数に置き換えられることを期待)、
と読み取ったんだけど、なぜにmin_なの?
constexprな関数(コンパイル時にint定数に置き換えられることを期待)、
と読み取ったんだけど、なぜにmin_なの?
553デフォルトの名無しさん
2018/03/12(月) 05:41:37.75 上限を求めるときに使うのはminだから、かな
知らんけど
知らんけど
554デフォルトの名無しさん (ワッチョイ e6e7-frl3)
2018/03/12(月) 06:20:08.42ID:I9Is/5l40 最初min_nonfactorialableでnon取った時に直し忘れました
555デフォルトの名無しさん (スッップ Sd8a-ted0)
2018/03/13(火) 09:59:46.06ID:CGjn2uNbd 一日の秒数を86400と書いてたらマジックナンバーやめろと言われたんだけど、
プログラムを少しでも書く人間にとってその数字は常識でいいよね?
60*60*24 と書いて「その60とか24は何だ?」と言われないでしょ?
それと同じレベルだと思ってるんだけど。
プログラムを少しでも書く人間にとってその数字は常識でいいよね?
60*60*24 と書いて「その60とか24は何だ?」と言われないでしょ?
それと同じレベルだと思ってるんだけど。
556デフォルトの名無しさん (ワッチョイ ea12-OyD+)
2018/03/13(火) 10:10:13.70ID:oQx4WixC0 うるう秒でクラッシュするクソソフトウェアの出来あがり
ニュートン力学と天文学と暦学からやりなおした方がいい
ニュートン力学と天文学と暦学からやりなおした方がいい
557デフォルトの名無しさん (スプッッ Sd2a-ymMl)
2018/03/13(火) 10:13:40.69ID:bAh/W6qqd558デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/13(火) 10:38:37.74ID:pKedwP800 そろそろ標準に日付計算のライブラリ欲しいわ
559デフォルトの名無しさん (ワッチョイ cb38-uQtz)
2018/03/13(火) 11:02:13.56ID:92t/zLSk0560デフォルトの名無しさん (スッップ Sd8a-ted0)
2018/03/13(火) 11:32:32.41ID:CGjn2uNbd561デフォルトの名無しさん (スッップ Sd8a-ted0)
2018/03/13(火) 11:37:27.38ID:CGjn2uNbd >>557
86400がプログラマの常識的にマジックナンバーなのかどうか、って話ですよ
86400がプログラマの常識的にマジックナンバーなのかどうか、って話ですよ
562デフォルトの名無しさん (ワッチョイ 6a8a-aWcx)
2018/03/13(火) 11:45:44.57ID:cL/fN0Uj0 所で皆さんmakefileはどう編集してます
あまり触れていないようなので気になります
あまり触れていないようなので気になります
563デフォルトの名無しさん (ワッチョイ cb38-rkOG)
2018/03/13(火) 11:45:51.13ID:92t/zLSk0 2147483647なら俺の常識だが
564デフォルトの名無しさん (ワッチョイ 2a98-Nvj+)
2018/03/13(火) 11:47:54.17ID:Hyr8QuVd0565デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/13(火) 12:00:55.79ID:qHQADaBY0 他人と共有するコードならなるべく要素を分解して分かりやすく書いた方が好ましい
2の倍数も直接記述するのではなくシフト演算使った方が綺麗
2の倍数も直接記述するのではなくシフト演算使った方が綺麗
566デフォルトの名無しさん (ワッチョイ 6a23-6rgV)
2018/03/13(火) 12:18:10.82ID:23dHbGxb0 くくるんじゃなくて…
クラス宣言
int main()
{....}
あとは c++ スレで
クラス宣言
int main()
{....}
あとは c++ スレで
567デフォルトの名無しさん (ワッチョイ 6a23-6rgV)
2018/03/13(火) 12:18:34.80ID:23dHbGxb0 誤爆しました
568デフォルトの名無しさん (スプッッ Sd43-8RCb)
2018/03/13(火) 12:51:25.09ID:YF2y/th/d 常識なんて集団が変われば変わる
そのコードを見せる事を想定した集団の常識かどうかを考えろ
そのコードを見せる事を想定した集団の常識かどうかを考えろ
569デフォルトの名無しさん (ワッチョイ 6a8a-6CfZ)
2018/03/13(火) 14:10:31.07ID:cL/fN0Uj0 2進数8進数10進数16進数のみではないということ
60進数や24進数の話でしょ時計を語るときは必須の常識
60進数や24進数の話でしょ時計を語るときは必須の常識
570デフォルトの名無しさん (ワッチョイ 6a8a-6CfZ)
2018/03/13(火) 14:26:54.36ID:cL/fN0Uj0 これをn進数って言うんだよ
571デフォルトの名無しさん (スッップ Sd8a-ted0)
2018/03/13(火) 14:37:04.66ID:CGjn2uNbd 集団の常識ってことなら、'86400' をマジックナンバーと思ってる人間は少数派っぽいので、
文句はやんわりと無視する方向で行きますわ
文句はやんわりと無視する方向で行きますわ
572デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/13(火) 14:53:30.50ID:qHQADaBY0 というかマジックナンバー言われるのって数字の意味とか集団の常識とかじゃなく書式の問題だよね
計算式の中に定数ポン置きしてる書き方してる奴がチームにいたらそりゃマズいよ、変数とか定数に置き換えろって俺も言う
計算式の中に定数ポン置きしてる書き方してる奴がチームにいたらそりゃマズいよ、変数とか定数に置き換えろって俺も言う
573デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/13(火) 14:59:18.81ID:qHQADaBY0 定数を定数に置き換えるってなんだよ
リテラルは定数なり変数なりにって感じで読み替えといて
リテラルは定数なり変数なりにって感じで読み替えといて
574デフォルトの名無しさん (スップ Sd8a-6rgV)
2018/03/13(火) 15:34:48.40ID:VrugGyEjd575デフォルトの名無しさん (ワッチョイ cb38-uQtz)
2018/03/13(火) 15:51:51.20ID:92t/zLSk0 uint16_t word = (hi << CHAR_BIT) | lo;
これCHAR_BIT != 8な環境を意識するんなら、16って書いてあるのも問題だね
const int micro_per_sec = 1000000;
int us = sec * micro_per_sec;
こう書けって言われたら俺はお断りする
これCHAR_BIT != 8な環境を意識するんなら、16って書いてあるのも問題だね
const int micro_per_sec = 1000000;
int us = sec * micro_per_sec;
こう書けって言われたら俺はお断りする
576デフォルトの名無しさん (ワンミングク MMda-GEnZ)
2018/03/13(火) 16:10:54.91ID:lXm9DcKjM e = 2.71828;
p = 3.1415;
p = 3.1415;
577デフォルトの名無しさん (スップ Sd8a-6rgV)
2018/03/13(火) 16:11:31.80ID:VrugGyEjd >>575
bit_per_char や shortでもintでもなく int8、uint16_t と明記したのは所与の仕様のつもり。
最近のapiはよくナノ秒返してくるから1000000000 倍
1000.0*1000*1000と分かち書きしたくなる
bit_per_char や shortでもintでもなく int8、uint16_t と明記したのは所与の仕様のつもり。
最近のapiはよくナノ秒返してくるから1000000000 倍
1000.0*1000*1000と分かち書きしたくなる
578デフォルトの名無しさん (ワッチョイ 6a8a-6CfZ)
2018/03/13(火) 16:29:39.63ID:cL/fN0Uj0 時刻を自動的に合わせますというコマンドボタンを作って
押すだけで済むのに
押すだけで済むのに
579デフォルトの名無しさん (ワッチョイ cb38-uQtz)
2018/03/13(火) 16:33:12.95ID:92t/zLSk0 >>577
それを言うなら1'000'000'000だろjk
それを言うなら1'000'000'000だろjk
580デフォルトの名無しさん (スッップ Sd8a-klMS)
2018/03/13(火) 18:34:24.26ID:5mSkIm9zd 86400って書くと、ideで定義の参照も使えんし
86400で検索したときに
1日の秒数なのか、適当に決めたタイムアウトとかの秒数なのか、ただのIDなのか、連番で出てきただけの数値なのかとか、無意味な数列なのかまざってわからんくなるやろ
86400で検索したときに
1日の秒数なのか、適当に決めたタイムアウトとかの秒数なのか、ただのIDなのか、連番で出てきただけの数値なのかとか、無意味な数列なのかまざってわからんくなるやろ
581デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/13(火) 18:56:33.51ID:U9FOV+VD0 #define SEC_PER_DAY (60*60*24)
なんてやる人いないのかな
なんてやる人いないのかな
>>581
#define は基本使わない、int const ABC = 12345; なら時々使う
#define は基本使わない、int const ABC = 12345; なら時々使う
583デフォルトの名無しさん (スップ Sd2a-fjrM)
2018/03/13(火) 19:52:43.56ID:0AXLQ0hnd constexpr……
584デフォルトの名無しさん (ワッチョイ e6e7-frl3)
2018/03/13(火) 20:19:53.55ID:My0TInc10 さっさとこう書けるようにしてくれ
今の<chrono>クソすぎんよ
int sec_par_day = static_cast<int>(std::chrono::second{std::chrono::day{{1}});
今の<chrono>クソすぎんよ
int sec_par_day = static_cast<int>(std::chrono::second{std::chrono::day{{1}});
585デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/13(火) 20:25:30.79ID:pKedwP800 クソというか機能が圧倒的に足りてない
586デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/13(火) 20:28:38.82ID:/ChP+Vc3M 86400とか1440でわかるけど
24*60*60とか24*60って書けばいいだけだと思う
24*60*60とか24*60って書けばいいだけだと思う
587デフォルトの名無しさん (ワッチョイ e6e7-frl3)
2018/03/13(火) 20:30:42.63ID:My0TInc10 21世紀も5分の1が過ぎようかっていうこの時代に
何が悲しゅうてたかが時刻を扱うだけでtime_pointの他にtmやらtime_tやらをガチャガチャさせられにゃならんのだよまったく
何が悲しゅうてたかが時刻を扱うだけでtime_pointの他にtmやらtime_tやらをガチャガチャさせられにゃならんのだよまったく
588デフォルトの名無しさん (ブーイモ MM97-1XNJ)
2018/03/13(火) 22:01:42.63ID:vZM1ymmwM589デフォルトの名無しさん
2018/03/13(火) 22:08:40.50 86400って何のために使うんだろう
うるう日とかうるう秒とか考慮しなきゃ気持ち悪くね?
うるう日とかうるう秒とか考慮しなきゃ気持ち悪くね?
590デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/13(火) 22:17:29.51ID:U9FOV+VD0 予め考慮しようがない
591デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/13(火) 22:22:44.39ID:pKedwP800 考慮する必要性があるものかどうかが分からないからなんとも
例えば時系列データをその時点から1日分の数を使うというものなら閏秒を考える必要がないし
例えば時系列データをその時点から1日分の数を使うというものなら閏秒を考える必要がないし
592デフォルトの名無しさん
2018/03/13(火) 22:28:43.21 >>591
1日に1秒満たないかもしれないだろ
1日に1秒満たないかもしれないだろ
593デフォルトの名無しさん (ワッチョイ 6a7c-uQtz)
2018/03/13(火) 22:35:46.84ID:2iGA+O2n0 int t = 86400; // 24*60*60
これで解決
これで解決
594デフォルトの名無しさん (スップ Sd8a-bl9z)
2018/03/13(火) 23:06:58.39ID:+Yto8Znfd 閏秒の有無等で可変のものなら可変のものなりの書き方するでしょ
計算して変数に入れるとか
問題は不変の数値定数をどう正規化して書くか、正規化する必要はあるか。
24*60*60 派の人と 60*60*24 派の人が両方プロジェクト内にいたらなんか嫌だな
計算して変数に入れるとか
問題は不変の数値定数をどう正規化して書くか、正規化する必要はあるか。
24*60*60 派の人と 60*60*24 派の人が両方プロジェクト内にいたらなんか嫌だな
595デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/13(火) 23:12:45.19ID:U9FOV+VD0 プロジェクトで誰かが決めたらそれに従うよ
派閥作るほどの問題じゃないでしょ
派閥作るほどの問題じゃないでしょ
596デフォルトの名無しさん (スップ Sd8a-bl9z)
2018/03/13(火) 23:17:41.96ID:+Yto8Znfd 絡むわけじゃないけど
決めたら従うのは当たり前で、それが「決める」ってことだろ。
派閥の話じゃなく混ざってたら気持ち悪いってことが言いたかったんだよ。
決めたら従うのは当たり前で、それが「決める」ってことだろ。
派閥の話じゃなく混ざってたら気持ち悪いってことが言いたかったんだよ。
597デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/13(火) 23:20:55.63ID:pKedwP800 あっちこっちに書き散らすものじゃないから混ざってるとかあり得ない
1カ所になるまでリファクタリングしろ
1カ所になるまでリファクタリングしろ
598デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/13(火) 23:44:10.62ID:U9FOV+VD0 気持ち悪いと思うかどうかは感性の問題だからなあ
例えばある日地球の回転速度が変わって1分が61秒になった
プログラムを修正しろと言われて、
場所によって書き方が違っていると大変だね
と言う話なら理解出来るけど
例えばある日地球の回転速度が変わって1分が61秒になった
プログラムを修正しろと言われて、
場所によって書き方が違っていると大変だね
と言う話なら理解出来るけど
599デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/13(火) 23:51:40.27ID:pKedwP800 constexpr int min = 60;
constexpr int hour = min * 60;
constexpr int day = hour * 24;
constexpr int hour = min * 60;
constexpr int day = hour * 24;
600デフォルトの名無しさん (ワッチョイ ea6e-uQtz)
2018/03/14(水) 06:39:53.70ID:4nqAllCK0 hoursは<chrono>にあるだろ
それとoperator""h
それとoperator""h
601デフォルトの名無しさん (ワッチョイ ea6e-uQtz)
2018/03/14(水) 06:41:16.16ID:4nqAllCK0 operator""dayがねえんだよな<chrono>って
602デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/14(水) 07:36:00.34ID:eC4PF2tM0 chronoのhoursはstd::chrono::duration<int, std::ratio<3600>>のエイリアスなので
daysはこうすればよい
using days = std::chrono::duration<int, std::ratio<86400>>
daysはこうすればよい
using days = std::chrono::duration<int, std::ratio<86400>>
603デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 08:15:03.73ID:ylQhqnt4M604デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/14(水) 08:42:21.15ID:eC4PF2tM0 閏秒を考慮するのと1日を86400秒とするのは全く関係ないのに閏秒がどうとか言い出した奴が悪いのでは
丁寧に書くなら計算の根拠として60*60*24を見えるところに書いておけばいい
丁寧に書くなら計算の根拠として60*60*24を見えるところに書いておけばいい
605デフォルトの名無しさん (スッップ Sd8a-ted0)
2018/03/14(水) 09:17:22.64ID:MwJCRjiPd 知ってる知識を披露したかっただけだろうから罪は軽い
606デフォルトの名無しさん
2018/03/14(水) 10:28:48.31 >>604
全く関係ないは言い過ぎ
全く関係ないは言い過ぎ
607デフォルトの名無しさん (ワッチョイ 5b8a-4l6a)
2018/03/14(水) 10:52:42.70ID:a7dBFlsI0 ほぼ関係ないな、難癖もいいとこ
実用上は全く関係ない
実用上は全く関係ない
608デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/14(水) 11:03:01.46ID:2oR7xNCJ0 うるう秒がどうのこうのと言う、問題じゃなく86400秒をそこでしか使わないって根拠が無いんだよね
後でまたその数値が出てくるとしてその度に86400と書くのか、もしその数値を修正する事になったら全部書き直すのか、2回3回使うようになって始めて変数なり定数なりに入れるのか
それなら最初から式中に出てくる数値は変数に格納してから使えって統一した方が話が早い
後でまたその数値が出てくるとしてその度に86400と書くのか、もしその数値を修正する事になったら全部書き直すのか、2回3回使うようになって始めて変数なり定数なりに入れるのか
それなら最初から式中に出てくる数値は変数に格納してから使えって統一した方が話が早い
609デフォルトの名無しさん (スプッッ Sd2a-ymMl)
2018/03/14(水) 11:14:21.74ID:G0IAn/x5d 今時マジックナンバーとか昭和からタイムスリップしてきたのかよ
610デフォルトの名無しさん (ワッチョイ 6a34-e70/)
2018/03/14(水) 11:43:33.36ID:xovkfTzX0 プログラムにおけるマジックナンバー(英: magic number、魔法の数字)とは、何らかの識別子もしくは定数として用いられる、プログラムのソースコード中に書かれた具体的な数値である。
そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたときに閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。
まるで魔法の数字だ」という皮肉を含む。
by Wikipedia
そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたときに閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。
まるで魔法の数字だ」という皮肉を含む。
by Wikipedia
611デフォルトの名無しさん (アウアウウー Sa1f-RjcS)
2018/03/14(水) 11:50:45.96ID:I+60yKfra 「1日の秒数」って定数を86400って書いて怒られたって話じゃないんだ?
612デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 12:06:59.05ID:L/3+Hz1H0613デフォルトの名無しさん (スッップ Sd8a-ted0)
2018/03/14(水) 13:01:38.98ID:MwJCRjiPd614デフォルトの名無しさん (ワッチョイ da7e-uQtz)
2018/03/14(水) 13:18:59.19ID:eC4PF2tM0 わかりきった定数はマジックナンバーではない
615デフォルトの名無しさん (スッップ Sd8a-klMS)
2018/03/14(水) 14:08:58.84ID:IrrOEbi1d >>613
それをヘッダに移動させるだけやん
それをヘッダに移動させるだけやん
616デフォルトの名無しさん (スッップ Sd8a-ted0)
2018/03/14(水) 14:14:27.78ID:MwJCRjiPd617デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/14(水) 14:16:09.81ID:2oR7xNCJ0618デフォルトの名無しさん (スッップ Sd8a-klMS)
2018/03/14(水) 14:34:38.65ID:IrrOEbi1d >>616
クソどうでもいいな
クソどうでもいいな
619デフォルトの名無しさん (ラクッペ MM43-1XNJ)
2018/03/14(水) 15:05:38.89ID:hFOwW8jGM ITのエンジニアって
こういうくだらないことで
給料貰ってるんだろうなあ
こういうくだらないことで
給料貰ってるんだろうなあ
620デフォルトの名無しさん (ワッチョイ 6a34-e70/)
2018/03/14(水) 15:18:02.33ID:xovkfTzX0 こういうクソみたいなことでもウンチク垂れてテコ入れしろと提案することにより仕事してます感かもし出す為だろうな
621デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 15:45:56.81ID:L/3+Hz1H0622デフォルトの名無しさん (ワッチョイ fb7f-uQtz)
2018/03/14(水) 16:27:34.05ID:9D6+Eo6Z0 俺がわかるからみんなわかるだろうというコードはすげー困るな
例えその場の全員がわかったとしても今後わからない奴が出てきた時の事を考えて
できうるかぎりわかりやすいコードを書くべきだな
例えその場の全員がわかったとしても今後わからない奴が出てきた時の事を考えて
できうるかぎりわかりやすいコードを書くべきだな
623デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 17:02:40.84ID:L/3+Hz1H0 そのためのコストにもよる
空想論じみた「わかりやすさ」にまで付き合ってらんないこともある
特に最低限のプロとしてのスキルを欠く者を想定することはしない
ちょっと飛躍するがプログラム言語だってそうなっている
マシンの性能を使いやすさに振るということを無限にはやらない
どのくらいのアホまで付き合ってやるのか性能とのトレードオフで
色んなバランスで棲み分けになっている
空想論じみた「わかりやすさ」にまで付き合ってらんないこともある
特に最低限のプロとしてのスキルを欠く者を想定することはしない
ちょっと飛躍するがプログラム言語だってそうなっている
マシンの性能を使いやすさに振るということを無限にはやらない
どのくらいのアホまで付き合ってやるのか性能とのトレードオフで
色んなバランスで棲み分けになっている
624デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/14(水) 17:03:50.56ID:2oR7xNCJ0 まぁ別に自分だけが使う分にはいくら分かりづらく書いてくれても構わんけどな
625デフォルトの名無しさん (ワッチョイ fb7f-uQtz)
2018/03/14(水) 17:11:14.36ID:9D6+Eo6Z0 86400を60*60*24と書くことにはなんのコストも支払ってないから書けばいいな
いちいち話を飛躍させる奴はなんなんだ
いちいち話を飛躍させる奴はなんなんだ
626デフォルトの名無しさん (アウアウウー Sa1f-RjcS)
2018/03/14(水) 17:20:37.67ID:I+60yKfra627デフォルトの名無しさん (ワッチョイ fb93-ao9L)
2018/03/14(水) 17:21:05.80ID:jowRUKsS0 学校の試験問題で一日の秒数としてソースに86400を書いたら
マジックナンバーだからと減点された、納得いかない。
みたいな発端じゃないのかなぁ。
マジックナンバーだからと減点された、納得いかない。
みたいな発端じゃないのかなぁ。
628デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 17:22:38.07ID:L/3+Hz1H0 それをfindとsedでやる勇気あるか?
たとえば俺なんかは1箇所ずつよく見て有機的に判断しないと怖いし
それの残業代は貰えるのか心配だ
たとえば俺なんかは1箇所ずつよく見て有機的に判断しないと怖いし
それの残業代は貰えるのか心配だ
629デフォルトの名無しさん (ワッチョイ fb7f-uQtz)
2018/03/14(水) 17:51:03.64ID:9D6+Eo6Z0 当然その程度のリファクタリングはするべきだしそもそもマジックナンバーをどうにかするべきだし
お前の残業代とかいう飛躍した話はどうでもいい
お前の残業代とかいう飛躍した話はどうでもいい
630デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 18:19:55.18ID:L/3+Hz1H0 飛躍じゃねえ実話だよ
ずいぶん昔、社内BBSでそれ系のことを言い出したやつが
偉い人から突っ込まれてた
ずいぶん昔、社内BBSでそれ系のことを言い出したやつが
偉い人から突っ込まれてた
631デフォルトの名無しさん (スッップ Sd8a-ted0)
2018/03/14(水) 18:35:58.25ID:MwJCRjiPd プロとか言い出してる人がいるけど、それこそ飛躍では?
632デフォルトの名無しさん (ワッチョイ be81-uQtz)
2018/03/14(水) 18:40:08.58ID:y6ADsCAy0 プログラムの話題から外れてきていると思いませんか?
633デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 18:48:14.13ID:uMO7yRavM634デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/14(水) 18:48:33.76ID:2oR7xNCJ0 まぁコスト次第で可読性を犠牲にするケースもあるだろうけど
この場合はメモリ食う訳でも処理遅くなる訳でもソースの構造が変わる訳でもない
86400でも十分分かりやすいかも知れんが60*60*24なら更に分かりやすくなる
どっちが良いかなんて議論の余地無いよね
この場合はメモリ食う訳でも処理遅くなる訳でもソースの構造が変わる訳でもない
86400でも十分分かりやすいかも知れんが60*60*24なら更に分かりやすくなる
どっちが良いかなんて議論の余地無いよね
635デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 18:50:15.11ID:L/3+Hz1H0636デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 18:54:56.26ID:uMO7yRavM >>626
> 16を2*2*2*2っていちいち書く人はいないでしょ
> まぁ1<<4って書けと言われるかもしれんが
状況次第だろ
場合分けの条件が4個あって各々2状態をとるとかなら2*2*2*2って書くかもしれない
下から4ビット目のマスクが欲しいなら1<<4って書くこともある
> 16を2*2*2*2っていちいち書く人はいないでしょ
> まぁ1<<4って書けと言われるかもしれんが
状況次第だろ
場合分けの条件が4個あって各々2状態をとるとかなら2*2*2*2って書くかもしれない
下から4ビット目のマスクが欲しいなら1<<4って書くこともある
637デフォルトの名無しさん (ワッチョイ 260e-hn8E)
2018/03/14(水) 18:58:33.90ID:2oR7xNCJ0 >>636
ビットフィールド使えば?
ビットフィールド使えば?
638デフォルトの名無しさん (ワッチョイ cb74-uQtz)
2018/03/14(水) 19:09:24.20ID:L/3+Hz1H0 シフト使うな、ビットフィールドで書け
なんて言われると、俺は相手にもよるが逆らいそう
なんて言われると、俺は相手にもよるが逆らいそう
639デフォルトの名無しさん (ドコグロ MM22-3fsH)
2018/03/14(水) 19:37:46.29ID:uMO7yRavM >>637
ビットフィールドは割り付け順序が処理系定義だったりしたからあまり使ったことがない
ビットフィールドは割り付け順序が処理系定義だったりしたからあまり使ったことがない
640デフォルトの名無しさん (ブーイモ MMd6-dpuX)
2018/03/14(水) 21:26:40.49ID:kWAHqA+uM たまには2進リテラルちゃんのことも思い出してあげてください
641デフォルトの名無しさん (ワッチョイ c193-y/L7)
2018/03/15(木) 06:36:14.64ID:F+InEeO+0 議論の本筋(1日の秒数として即値で86400と書くことの是非)とはさらに離れるけど、
ビットシフトを使う定数は常にカッコで囲んでくれ。
res = a + 1<<4 + b;
res = a +(1<<4)+ b;
ビットシフトを使う定数は常にカッコで囲んでくれ。
res = a + 1<<4 + b;
res = a +(1<<4)+ b;
642デフォルトの名無しさん
2018/03/15(木) 07:15:43.22643デフォルトの名無しさん (ワッチョイ dfe3-MOYc)
2018/03/15(木) 08:58:15.76ID:x1WHRaDf0 >>641
下のつもりで上書いたらただのバグじゃん
下のつもりで上書いたらただのバグじゃん
644デフォルトの名無しさん (ワッチョイ a3dd-hKdO)
2018/03/15(木) 09:19:10.68ID:3Ym40JOm0 算術と混用するときは結合順位に注意せよ、というだけのことを
いちいち必ずだ!ルールだ!と金切り声で吠えついてくるやつはウザい
いちいち必ずだ!ルールだ!と金切り声で吠えついてくるやつはウザい
645デフォルトの名無しさん (ブーイモ MM61-R9c4)
2018/03/15(木) 09:55:31.41ID:LkpAylTJM >>642
可読性悪くしてかえって品質低下招きそうな指摘だな
可読性悪くしてかえって品質低下招きそうな指摘だな
646デフォルトの名無しさん (ワッチョイ 87cc-SCBH)
2018/03/15(木) 13:29:47.33ID:O2sRH7tT0 vectorをつなげる際、copyが良いとか、insertを使えとか色々書いてあるのですが、どれが良いのでしょうか?
647デフォルトの名無しさん (ワッチョイ af7e-hKdO)
2018/03/15(木) 13:54:37.80ID:XNo6/02A0 あらかじめ領域を広げておく必要があるけどinsertの方がチェックが入らない分速い
648デフォルトの名無しさん (ワッチョイ 7b34-HLM0)
2018/03/15(木) 15:23:48.90ID:9f/t5+6G0 reserveしてinsertだな
649デフォルトの名無しさん (アウアウウー Sa9d-mp3k)
2018/03/15(木) 15:36:42.69ID:q9z+dA6Ga insertの直前にreserveって意味あるのか?
650デフォルトの名無しさん (ワッチョイ af7e-hKdO)
2018/03/15(木) 16:32:16.09ID:XNo6/02A0 reserveは終端のポインタが更新されないからresizeじゃないとだめ
651デフォルトの名無しさん (ワッチョイ 7b34-HLM0)
2018/03/15(木) 16:57:46.96ID:R5/WYUtW0 reserveしてback_inserterでcopy
652デフォルトの名無しさん (ワッチョイ 7bcb-R9c4)
2018/03/15(木) 17:05:27.14ID:QEAEy0DH0653デフォルトの名無しさん (ワッチョイ 7bcb-R9c4)
2018/03/15(木) 17:09:09.32ID:QEAEy0DH0654デフォルトの名無しさん (ワッチョイ af7e-hKdO)
2018/03/15(木) 17:21:30.23ID:XNo6/02A0 ごめんinsertとcopy逆だった
655デフォルトの名無しさん (アウアウウー Sa9d-mp3k)
2018/03/15(木) 17:28:15.72ID:q9z+dA6Ga656デフォルトの名無しさん (ワッチョイ 7bcb-R9c4)
2018/03/15(木) 19:10:49.64ID:QEAEy0DH0 >>655
失礼。挿入位置のiteratorもあるから、3つ受け取るタイプの誤り。
失礼。挿入位置のiteratorもあるから、3つ受け取るタイプの誤り。
657デフォルトの名無しさん (アウアウウー Saaf-0FUd)
2018/03/15(木) 22:07:51.82ID:dQGk6ayHa cpprefjpの任意の式によるSFINAEの頁でdecltype(a + b, bool())と記載されているコードがあるんだけれど、
このa+b, bool()はラムダ式?
該当頁
https://cpprefjp.github.io/lang/cpp11/range_based_for.html
このa+b, bool()はラムダ式?
該当頁
https://cpprefjp.github.io/lang/cpp11/range_based_for.html
658デフォルトの名無しさん (アウアウウー Saaf-0FUd)
2018/03/15(木) 22:09:23.09ID:dQGk6ayHa659デフォルトの名無しさん (ワッチョイ a3dd-hKdO)
2018/03/15(木) 22:15:55.91ID:3Ym40JOm0 ラムダ式が[で始まらないことってあるのか?
660デフォルトの名無しさん (ワッチョイ 9beb-85/6)
2018/03/15(木) 22:41:44.53ID:ubsUN4Yb0 >>657
カンマ演算子とdecltypeでコンパイル時に評価される
decltypeの中身を左から順に評価し、結果は一番右の型が帰る
この場合はa+bの型が評価出来ればbool、できなければSFINAE
カンマ演算子とdecltypeでコンパイル時に評価される
decltypeの中身を左から順に評価し、結果は一番右の型が帰る
この場合はa+bの型が評価出来ればbool、できなければSFINAE
661デフォルトの名無しさん (ワッチョイ af7e-hKdO)
2018/03/15(木) 22:41:47.80ID:XNo6/02A0 >>657
>a + b
a + bが可能かどうか調べる
>,
次の式を評価する
>bool()
bool型の初期値を返す
つまりdecltype(a + b, bool())はa + bでSFINAEをしつつカンマ演算子でdecltypeにbool型の値を与えて返り値の型をbool型にしている
>a + b
a + bが可能かどうか調べる
>,
次の式を評価する
>bool()
bool型の初期値を返す
つまりdecltype(a + b, bool())はa + bでSFINAEをしつつカンマ演算子でdecltypeにbool型の値を与えて返り値の型をbool型にしている
662デフォルトの名無しさん (アウアウウー Saaf-0FUd)
2018/03/15(木) 22:57:18.20ID:dQGk6ayHa decltypeで,も使えたんですね。一番右の型が帰るということはdecltype(a+b,a-b,a*b,a/b,bool())とかしてもよさそう。。。
自分ではその機能を説明してるページを見つけれませんでした。
ありがとうございます。
自分ではその機能を説明してるページを見つけれませんでした。
ありがとうございます。
663はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/15(木) 23:50:51.42ID:VBbQqJBt0664デフォルトの名無しさん (スップ Sddb-dtcO)
2018/03/16(金) 07:54:12.89ID:UGENGinrd decltypeって実行時の型を得れる?
665デフォルトの名無しさん (アウアウウー Sa9d-mp3k)
2018/03/16(金) 09:23:42.20ID:Qbg0TjKpa >>656
a.reserve(a.size()+b.size());
a.insert(a.end(),b.begin(),b.end());
こんな感じのことをやるのかと思ったんだけど、これ意味ないでしょ?
a.reserve(a.size()+b.size());
a.insert(a.end(),b.begin(),b.end());
こんな感じのことをやるのかと思ったんだけど、これ意味ないでしょ?
666デフォルトの名無しさん (スッップ Sd2f-JcB1)
2018/03/16(金) 10:04:08.28ID:SYp9l/ZId >>664
declとはdeclareの略であることを考えると
declとはdeclareの略であることを考えると
667デフォルトの名無しさん (ワッチョイ 7b34-HLM0)
2018/03/16(金) 10:17:31.56ID:g2YO+i2m0 a.reserve(a.size()+b.size());
copy(b.begin(),b.end(),back_inserter(a));
copy(b.begin(),b.end(),back_inserter(a));
668デフォルトの名無しさん (ブーイモ MM3f-R9c4)
2018/03/16(金) 15:36:10.69ID:0r9PteXTM >>665
random iteratorの場合の特殊化実装がありました。ごめんなさい
random iteratorの場合の特殊化実装がありました。ごめんなさい
669デフォルトの名無しさん (ササクッテロレ Sp6f-N9vq)
2018/03/16(金) 18:08:23.55ID:Al45BtF0p >>662
decltype comma trickでググれ
decltype comma trickでググれ
670デフォルトの名無しさん (ワッチョイ f3e7-dVgQ)
2018/03/16(金) 20:56:30.80ID:DBylbaSH0 まあoperator,()が定義されてるとまずいんだけどな
671デフォルトの名無しさん (アウアウアー Sa83-2N1f)
2018/03/19(月) 18:07:03.75ID:/U1oheuNa インスタンスにdeleteかけたとき、メンバ変数が破壊されるのとデストラクタが実行されるのはどっちが先?
今書いてるコードがデストラクタでメンバ変数アクセスすると落ちることがあるから、破壊されるのが先なんだろうか?
今書いてるコードがデストラクタでメンバ変数アクセスすると落ちることがあるから、破壊されるのが先なんだろうか?
672はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/19(月) 18:15:15.06ID:RG1qd9Pc0 >>671
原則としては構築の逆順って覚えておくと間違えない。
原則としては構築の逆順って覚えておくと間違えない。
>>671
delete this; とかしてませんか、これは基本的に避けたほうがいい
delete this; とかしてませんか、これは基本的に避けたほうがいい
674片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdd7-5vKF)
2018/03/19(月) 18:43:06.07ID:SpFx62hRd >>673に同意。確保と破棄は生ポインタを触らずに自動化した方がいい。スマートポインタとかコンテナとか。
二回deleteを避けるためにポインタにNULLを代入する技もある。
二回deleteを避けるためにポインタにNULLを代入する技もある。
675デフォルトの名無しさん (アウアウウー Saaf-0FUd)
2018/03/19(月) 21:03:24.06ID:kCg91IvDa そろそろNULLは駆逐してnullptrに移行させたい
676デフォルトの名無しさん (ワッチョイ 53bd-mA8b)
2018/03/19(月) 22:46:40.23ID:jnDGFLZz0 >今書いてるコードがデストラクタでメンバ変数アクセスすると落ちることがある
へ〜んなの
ていうかメモリを壊しているかすでにdeleteされた死骸を再deleteしてるとしか、
>二回deleteを避けるためにポインタにNULLを代入
OpenCVのC言語インターフェースのやつ、
へ〜んなの
ていうかメモリを壊しているかすでにdeleteされた死骸を再deleteしてるとしか、
>二回deleteを避けるためにポインタにNULLを代入
OpenCVのC言語インターフェースのやつ、
677デフォルトの名無しさん (ワッチョイ c193-7BQk)
2018/03/19(月) 22:57:33.17ID:cmSuhSLP0 C++勉強中の者です。
http://codepad.org/C8t9k4fD
ソース自体をプログラムに読み込ませると
#includ
で止まってしまいます。
Cのfgets()のようには使えないのでしょうか。
http://codepad.org/C8t9k4fD
ソース自体をプログラムに読み込ませると
#includ
で止まってしまいます。
Cのfgets()のようには使えないのでしょうか。
678デフォルトの名無しさん
2018/03/19(月) 23:06:01.35 >>677
According to the C++ reference
http://en.cppreference.com/w/cpp/io/basic_istream/getline
getline sets the ios::fail when count-1 characters have been extracted.
You would have to call filein.clear(); in between the getline() calls.
According to the C++ reference
http://en.cppreference.com/w/cpp/io/basic_istream/getline
getline sets the ios::fail when count-1 characters have been extracted.
You would have to call filein.clear(); in between the getline() calls.
679デフォルトの名無しさん (ワッチョイ c193-+EIL)
2018/03/19(月) 23:26:45.72ID:cmSuhSLP0 >>678
区切り文字を読まないとfail状態になってそれ以降は失敗し続けるので止まってしまうということですかね
区切り文字を読まないとfail状態になってそれ以降は失敗し続けるので止まってしまうということですかね
680デフォルトの名無しさん (ワッチョイ 53bd-mA8b)
2018/03/19(月) 23:27:24.60ID:jnDGFLZz0 std::getline()は読み込んだ文字列に改行文字を含めないから
行末まできちんと読んだのか
文字数カウントのせいで読み込みが行の途中でぶちきれたのか
直ちにはわからないといいうアホウな仕様
判別には結局std::basic_istream<T>::unget()の助けが要る
C++標準ライブラリのうちストリーム関連だけは腐っているからC言語のを使いなしゃれ
※ 個人の感想です
行末まできちんと読んだのか
文字数カウントのせいで読み込みが行の途中でぶちきれたのか
直ちにはわからないといいうアホウな仕様
判別には結局std::basic_istream<T>::unget()の助けが要る
C++標準ライブラリのうちストリーム関連だけは腐っているからC言語のを使いなしゃれ
※ 個人の感想です
681デフォルトの名無しさん (ワッチョイ 53bd-mA8b)
2018/03/19(月) 23:28:25.97ID:jnDGFLZz0 訂正
△: C++標準ライブラリのうちストリーム関連だけは腐っているからC言語のを使いなしゃれ
◎: C++標準ライブラリのうちストリーム関連だけは本当に腐っているからC言語のを使いなしゃれ
△: C++標準ライブラリのうちストリーム関連だけは腐っているからC言語のを使いなしゃれ
◎: C++標準ライブラリのうちストリーム関連だけは本当に腐っているからC言語のを使いなしゃれ
682デフォルトの名無しさん (ワッチョイ f3e7-dVgQ)
2018/03/20(火) 01:02:22.15ID:mI6/gPTY0 入出力はCもC++もクソまみれだからなぁ
ちょっとコンソール出力を整形しようとして、あの肥溜めのクソくだらない落とし穴地獄にいちいち付き合わされた結果
プログラミングそのものが嫌いになる人達が山のようにいるのが本当に残念だ
ちょっとコンソール出力を整形しようとして、あの肥溜めのクソくだらない落とし穴地獄にいちいち付き合わされた結果
プログラミングそのものが嫌いになる人達が山のようにいるのが本当に残念だ
683デフォルトの名無しさん (ワッチョイ e19f-M10G)
2018/03/20(火) 01:12:22.56ID:PXcTmg8I0 いるか?
684デフォルトの名無しさん (ワッチョイ f3e7-dVgQ)
2018/03/20(火) 01:20:34.94ID:mI6/gPTY0 自分が知ってる昔はいっぱいいたけど
最近だとスクリプト言語から先に入るから減ってるのかね?
最近だとスクリプト言語から先に入るから減ってるのかね?
685はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/20(火) 01:21:52.68ID:N1yoGURK0 オブジェクトの外部表現を型ごとに定義できる iostream は悪くない設計だと思うんだけどなぁ。
686デフォルトの名無しさん (ワッチョイ 7bcb-R9c4)
2018/03/20(火) 01:41:51.26ID:PjVFN34O0 ローカライズに向いてない。
打鍵数が倍増どころじゃない。
モダン言語はみなprintfライクだしねー
打鍵数が倍増どころじゃない。
モダン言語はみなprintfライクだしねー
687デフォルトの名無しさん (ワッチョイ e19f-hKdO)
2018/03/20(火) 02:48:01.36ID:PXcTmg8I0 printf()は便利ではあるが桁を揃えて出す時に面倒になることもある。
特にこの頃は UTF-8 で漢字混ざりだと文字幅とバイト数または文字数が一致しない。
そもそもそんなものの一致をあてにすること自体が間違いかも知れないが、Unicode
には一応 HALF WIDTH, FULL WIDTH 等があるんだから何とかしてこれを生かした
フォーマッタが欲しいところではある。
特にこの頃は UTF-8 で漢字混ざりだと文字幅とバイト数または文字数が一致しない。
そもそもそんなものの一致をあてにすること自体が間違いかも知れないが、Unicode
には一応 HALF WIDTH, FULL WIDTH 等があるんだから何とかしてこれを生かした
フォーマッタが欲しいところではある。
688デフォルトの名無しさん (アウーイモ MMb3-2N1f)
2018/03/20(火) 06:49:53.60ID:eswqOupsM689デフォルトの名無しさん (ワッチョイ af7e-hKdO)
2018/03/20(火) 06:55:01.02ID:83N3dpVy0 streamはコンソールの入出力のためだけにあるわけじゃないから
690デフォルトの名無しさん (ワッチョイ 1ff3-hKdO)
2018/03/20(火) 06:55:05.50ID:Wsijl5j90 つーてもcoutだってsetw/setfillはあんまり使いやすくないしなあ
operator<<をユーザー定義できるのはありがたいけどね
operator<<をユーザー定義できるのはありがたいけどね
691デフォルトの名無しさん (ワッチョイ a723-tAvx)
2018/03/20(火) 13:10:27.33ID:geezFnQ40692デフォルトの名無しさん (ワッチョイ f3e7-dVgQ)
2018/03/20(火) 19:32:56.49ID:mI6/gPTY0 別の原因に見える
まずデストラクタじゃなくて普通のメンバ関数で明示的に呼んで止めた時に大丈夫か確認してはどうか
まずデストラクタじゃなくて普通のメンバ関数で明示的に呼んで止めた時に大丈夫か確認してはどうか
693デフォルトの名無しさん (スップ Sd03-tAvx)
2018/03/20(火) 19:45:17.42ID:KQMGt9+Dd pthread_cancel はいろんなことがよく分かっている人しか使ってはいけない
694デフォルトの名無しさん (ワッチョイ 53bd-mA8b)
2018/03/20(火) 22:33:41.91ID:f35CyiEk0 >>685
「<<」と「>>」の2種類しか用意できんやんけ
それらを表示と入力に割り当ててしまえば結局シリアライズのための固有なメソッドなりインターフェースなりを別途作らねばならんぬ、
そもそもの構想からして頓挫してゐる、
頓挫してゐるのだ…!
「<<」と「>>」の2種類しか用意できんやんけ
それらを表示と入力に割り当ててしまえば結局シリアライズのための固有なメソッドなりインターフェースなりを別途作らねばならんぬ、
そもそもの構想からして頓挫してゐる、
頓挫してゐるのだ…!
695はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/20(火) 23:55:08.06ID:N1yoGURK0696デフォルトの名無しさん (ワッチョイ 53bd-mA8b)
2018/03/21(水) 00:33:52.80ID:7c9Ne47J0 ちょっなんで数億年の生物史史上はじめて
ようやっとSTDINとSTDOUTとSTDERRの3種類に世界が抽象化されたストリームという概念|を
細分化するという元の木阿弥にしますか;;
藻前は
some_command | tee result.txt > some_file.bin
とかいったパイプやリダイレクトを表示専用とかシリアライズ専用とかに分けたいのかっていうか、
ようやっとSTDINとSTDOUTとSTDERRの3種類に世界が抽象化されたストリームという概念|を
細分化するという元の木阿弥にしますか;;
藻前は
some_command | tee result.txt > some_file.bin
とかいったパイプやリダイレクトを表示専用とかシリアライズ専用とかに分けたいのかっていうか、
697デフォルトの名無しさん (ワッチョイ e17f-hKdO)
2018/03/21(水) 00:44:24.33ID:p0rFESlF0 なに藻前って
698はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 01:10:44.31ID:MouF+uE40 >>696
お前は何を言ってるんだ。
ここで言ってるストリームは C++ 用語のストリームだぞ。
「ストリーム『型』」ってわざわざ書いてるんだからわかれよ。
下位レイヤでは好きなところに繋げればいい。
お前は何を言ってるんだ。
ここで言ってるストリームは C++ 用語のストリームだぞ。
「ストリーム『型』」ってわざわざ書いてるんだからわかれよ。
下位レイヤでは好きなところに繋げればいい。
699デフォルトの名無しさん (ワッチョイ af7e-hKdO)
2018/03/21(水) 01:18:27.48ID:9NBOfW2C0 streamとstreambufの違いを理解しよう
700はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 01:24:40.58ID:MouF+uE40 要するに std::basic_ostream を継承した何かを作ればいいんだ。
701デフォルトの名無しさん (ワッチョイ b180-lboF)
2018/03/21(水) 06:52:22.30ID:fTbDiwfs0 ストリームはもう捨てたほうが良いぞ。
おじさんからの警告だ。
おじさんからの警告だ。
702デフォルトの名無しさん (ワッチョイ 7b34-HLM0)
2018/03/21(水) 07:14:12.04ID:2n7LolrI0 便利そうに見えて便利に使えない
それがstream
それがstream
703デフォルトの名無しさん (ワッチョイ ebb6-CZ08)
2018/03/21(水) 07:18:35.01ID:zecIlzA/0 「29歳既婚、2年前に会社を辞めた。ボードゲーム作りを始めて3700万円を
売り上げたけど何か聞きたいことはある?」回答いろいろ
http://labaq.com/archives/51880196.html
日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには?
https://bodoge.hoobby.net/columns/00013
はじめてボードゲームを作ってはじめてゲームマーケットに出店した ので、ひとり反省会をしてみる。
http://datecocco.hatenablog.com/entry/2015/11/26/000000
はじめて作ったボードゲームを売った話
http://nrmgoraku.hateblo.jp/entry/2017/05/17/210000
ボードゲームイベント「ゲームマーケット」から業界が見えた!
https://entertainmentstation.jp/61107
ゲームマーケットに挑む人向けガイド
http://spa-game.com/?p=4830
ボードゲームはどう作るのか、自分なりに考えた
http://roy.hatenablog.com/entry/2014/07/09/124824
オトナも遊べるボードゲーム!自作するといくらになるのか
http://www.d-laboweb.jp/special/sp312/
ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの
市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ)
https://bodoge.hoobby.net/columns/00001
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
売り上げたけど何か聞きたいことはある?」回答いろいろ
http://labaq.com/archives/51880196.html
日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには?
https://bodoge.hoobby.net/columns/00013
はじめてボードゲームを作ってはじめてゲームマーケットに出店した ので、ひとり反省会をしてみる。
http://datecocco.hatenablog.com/entry/2015/11/26/000000
はじめて作ったボードゲームを売った話
http://nrmgoraku.hateblo.jp/entry/2017/05/17/210000
ボードゲームイベント「ゲームマーケット」から業界が見えた!
https://entertainmentstation.jp/61107
ゲームマーケットに挑む人向けガイド
http://spa-game.com/?p=4830
ボードゲームはどう作るのか、自分なりに考えた
http://roy.hatenablog.com/entry/2014/07/09/124824
オトナも遊べるボードゲーム!自作するといくらになるのか
http://www.d-laboweb.jp/special/sp312/
ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの
市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ)
https://bodoge.hoobby.net/columns/00001
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
704デフォルトの名無しさん (ワッチョイ 1ff3-hKdO)
2018/03/21(水) 10:36:30.48ID:DQv7yGEy0 >>696
カンブリア紀からオルドビス紀にかけて行われた抽象化は
今でいうインターフェイスの考え方で、当たり前だが
インターフェイスを継承する実装クラスは無数にあってよい
そういうのは元の木阿弥とは言わないぞ
カンブリア紀からオルドビス紀にかけて行われた抽象化は
今でいうインターフェイスの考え方で、当たり前だが
インターフェイスを継承する実装クラスは無数にあってよい
そういうのは元の木阿弥とは言わないぞ
705はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 15:09:48.71ID:MouF+uE40 >>705
空いているディスクリプタが使用されるとしても、自分で特定の数字を指定してディスクリプタにすることはできなかったんじゃなかったかな?
空いているディスクリプタが使用されるとしても、自分で特定の数字を指定してディスクリプタにすることはできなかったんじゃなかったかな?
>>706
失礼、dup2() というのがあったね…
失礼、dup2() というのがあったね…
708デフォルトの名無しさん (ワッチョイ af7e-hKdO)
2018/03/21(水) 15:58:29.69ID:9NBOfW2C0 coutがSTDOUTにつながってるだけでここは何につなげてもいいということ
streambufの中身はただの配列でもいいし、アプリケーションのロガーでもいいし、循環バッファでもいいし、通信のポートでもいい
streambufの中身はただの配列でもいいし、アプリケーションのロガーでもいいし、循環バッファでもいいし、通信のポートでもいい
709デフォルトの名無しさん (ワッチョイ a723-tAvx)
2018/03/21(水) 19:28:41.53ID:TV3lE0eZ0 シリアライズするときはバイナリ表現にしたいし
ログするときは文字列表記にしたいし
ログするときは文字列表記にしたいし
710はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 20:00:34.84ID:MouF+uE40 >>709
だからそれはストリームオブジェクトの型で切り替えろって言ってるんだろうが
だからそれはストリームオブジェクトの型で切り替えろって言ってるんだろうが
711デフォルトの名無しさん (スプッッ Sd13-tAvx)
2018/03/21(水) 20:30:34.07ID:VVSY5O5Ed それを嫌だって言ってんだよ
バイナリの読み書きは write() だの read() で十分
バイナリの読み書きは write() だの read() で十分
712はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 20:33:11.12ID:MouF+uE40 read なり write なりを「使う」のは別にいいよ。
それを C++ 上でどのように抽象化すればいいかって話なんだから。
そういうレイヤの違う話を混ぜ込んでくるなよ。
それを C++ 上でどのように抽象化すればいいかって話なんだから。
そういうレイヤの違う話を混ぜ込んでくるなよ。
713デフォルトの名無しさん (スップ Sd03-tAvx)
2018/03/21(水) 20:43:51.09ID:KgSvodNyd そこで新しい型を設けてまで << を使う意味がない
cout にバイナリでシリアライズするときはどうすんの?
size_t serialize(const T& t, ostream& os)
とかを各型用に書く方がマシ
cout にバイナリでシリアライズするときはどうすんの?
size_t serialize(const T& t, ostream& os)
とかを各型用に書く方がマシ
714デフォルトの名無しさん (スップ Sd03-tAvx)
2018/03/21(水) 20:47:43.15ID:KgSvodNyd バイナリでシリアライズするに際して
別の型のストリームオブジェクトを作ってまで
<< だの dec だの endl を使えるようにすることの利点を説明して欲しい
別の型のストリームオブジェクトを作ってまで
<< だの dec だの endl を使えるようにすることの利点を説明して欲しい
715デフォルトの名無しさん (ワッチョイ af7e-hKdO)
2018/03/21(水) 21:36:05.23ID:9NBOfW2C0 例外を除いて
operator<<()は書式化出力
write()は非書式化出力
なのでバイナリを出力するときはwrite()を使うべき
>size_t serialize(const T& t, ostream& os)
シリアライズのような複雑な操作をするときはこれは悪い選択じゃない
というかstreamそのものを放り込むのはたまに見かける
operator<<()は書式化出力
write()は非書式化出力
なのでバイナリを出力するときはwrite()を使うべき
>size_t serialize(const T& t, ostream& os)
シリアライズのような複雑な操作をするときはこれは悪い選択じゃない
というかstreamそのものを放り込むのはたまに見かける
716デフォルトの名無しさん (ブーイモ MM61-/CVT)
2018/03/21(水) 22:02:23.07ID:52xrh1HkM えっブロックデバイスにもStreamを
717はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 22:15:54.63ID:MouF+uE40 >>715
書式化 (formatted) ってのと、結果がバイナリかというのは直行する概念だよ。
シリアライズってのはオブジェクトのバイト列をそのまま出力することじゃなくて、
バイナリ形式の特定のフォーマットにして出力することだろ。
それは書式化って言うんだよ。
書式化 (formatted) ってのと、結果がバイナリかというのは直行する概念だよ。
シリアライズってのはオブジェクトのバイト列をそのまま出力することじゃなくて、
バイナリ形式の特定のフォーマットにして出力することだろ。
それは書式化って言うんだよ。
718はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 22:26:24.75ID:MouF+uE40 >>714
マニピュレータを使える意味はないかもな。
使えないように定義することも出来るし、意味がないなら使えないようにしておくべき。
ここでは抽象化の話をしているんだ。
出力先が人向けのテキスト表現であるか機械向けのシリアライズ表現であるかによって
書き方を変えなきゃならない、相手を意識しなきゃならないというよりは、
相手によって自動で切り替わって欲しいってことなんだよ。
意識しなくていいデザインってのは意識しにくくなるってことと表裏一体だから、
見えなくなるのが気にくわないってのならわかる。
マニピュレータを使える意味はないかもな。
使えないように定義することも出来るし、意味がないなら使えないようにしておくべき。
ここでは抽象化の話をしているんだ。
出力先が人向けのテキスト表現であるか機械向けのシリアライズ表現であるかによって
書き方を変えなきゃならない、相手を意識しなきゃならないというよりは、
相手によって自動で切り替わって欲しいってことなんだよ。
意識しなくていいデザインってのは意識しにくくなるってことと表裏一体だから、
見えなくなるのが気にくわないってのならわかる。
719デフォルトの名無しさん (ワッチョイ 23f9-y9O9)
2018/03/21(水) 22:26:32.59ID:OwhHF7Zm0 直交
720はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 22:29:29.81ID:MouF+uE40721デフォルトの名無しさん (ワッチョイ 2b50-bRBW)
2018/03/21(水) 23:13:33.75ID:NRxI71LE0 無意味な処理が嫌だとか言っておきながら
ここでは無駄の塊みたいな方法を勧める
アホですね
ここでは無駄の塊みたいな方法を勧める
アホですね
722はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 3b6f-hKdO)
2018/03/21(水) 23:50:04.75ID:MouF+uE40 >>721
俺は一貫して抽象化の話をしてるつもりなんだが。
プログラマの意図を表現できる書き方をすべきって話をしてんの。
無意味な処理をしろと書いてあるのをプログラマの意図として読み取っていいのか?
そうじゃないだろう。
C++ がせっかく用意しているライブラリを活用するのが無駄なのか?
そうじゃないだろう。
俺は一貫して抽象化の話をしてるつもりなんだが。
プログラマの意図を表現できる書き方をすべきって話をしてんの。
無意味な処理をしろと書いてあるのをプログラマの意図として読み取っていいのか?
そうじゃないだろう。
C++ がせっかく用意しているライブラリを活用するのが無駄なのか?
そうじゃないだろう。
723デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/22(木) 07:21:49.59ID:tiDItZ1f0 ハッキリ言ってストリームは蛇足だったわ。
廃止したほうが良いわ。
廃止したほうが良いわ。
724デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/22(木) 07:25:52.15ID:tiDItZ1f0 Boostもそうだけど、有り余るC++のパワーをカッコよく使いこなそうとしてやっちまったみたいな。
もうちょっと使う側の立場にたつべきだな。
もうちょっと使う側の立場にたつべきだな。
725デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/22(木) 08:38:59.71ID:0Y4DSJfq0 黒魔術だなんだ言って楽しめないようではC++は向いていない
726デフォルトの名無しさん (ワッチョイ 37f3-zkh5)
2018/03/22(木) 10:14:29.52ID:Q5Rs9TJ/0 蛇足ねえ。。。
禿本1stでoperator overloadのデモ用に作られたサンプルなんだが
そういうのは後で取って付けた存在といえるのか?
禿本1stでoperator overloadのデモ用に作られたサンプルなんだが
そういうのは後で取って付けた存在といえるのか?
727デフォルトの名無しさん (ワッチョイ 1a12-aRf7)
2018/03/22(木) 17:28:14.63ID:PBLsyShY0 業界全体としては奥の深さを求める人(求道者)を一か所に集め留めるのには非常に有益な言語
728デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/22(木) 17:34:08.02ID:0Y4DSJfq0 そのうちAsioやRangeあたりも標準化されるだろうし
もうその方向に突き抜けてほしい
使いやすい言語なんか他にいくらでもある
もうその方向に突き抜けてほしい
使いやすい言語なんか他にいくらでもある
729はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-zkh5)
2018/03/22(木) 17:41:04.44ID:HExEyyqO0 具体的にどういうときに不便なのか語れよ。
使いにくいってだけじゃ何にもわからん。
使いにくいってだけじゃ何にもわからん。
730デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/22(木) 17:43:00.10ID:0Y4DSJfq0 C++に関しては慣れてない人がそう言ってるだけだから
731デフォルトの名無しさん (ワッチョイ a393-4ZrE)
2018/03/22(木) 19:57:57.53ID:sR+euIcT0 >>726
どの資料だったか覚えてないけど、演算子オーバーロードに関して
先生は「元の演算子の意味とかけ離れた挙動をさせるのは避けるべきだ」
みたいなことも書いてるよな。
まぁ、原則は指針であって絶対の規則じゃないわけだけど、
<< >> をビットシフトからストリーム入出力に振り替えておいて
どの口で言うか、このハゲッー! とか思ったり。
どの資料だったか覚えてないけど、演算子オーバーロードに関して
先生は「元の演算子の意味とかけ離れた挙動をさせるのは避けるべきだ」
みたいなことも書いてるよな。
まぁ、原則は指針であって絶対の規則じゃないわけだけど、
<< >> をビットシフトからストリーム入出力に振り替えておいて
どの口で言うか、このハゲッー! とか思ったり。
732デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/22(木) 20:06:11.34ID:0Y4DSJfq0 >>731
ストリームのような周知の事実になっているものはそれには当てはまらないでしょ
ストリームのような周知の事実になっているものはそれには当てはまらないでしょ
733はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-zkh5)
2018/03/22(木) 20:22:42.90ID:HExEyyqO0 >>731-732
まああれくらいのものになると、オブジェクトに追加で突っ込んでいくような動作が「元の演算子の意味」になっちゃってるよな。
そんなことより C++20 に入る予定のカレンダーでは日付を 2018y/mar/22 とか書けるらしくて、
これはさすがにクソやろ……。
これもいずれ普通に受け入れる気持ちになるだろうか。
まああれくらいのものになると、オブジェクトに追加で突っ込んでいくような動作が「元の演算子の意味」になっちゃってるよな。
そんなことより C++20 に入る予定のカレンダーでは日付を 2018y/mar/22 とか書けるらしくて、
これはさすがにクソやろ……。
これもいずれ普通に受け入れる気持ちになるだろうか。
734デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/22(木) 20:47:25.31ID:0Y4DSJfq0735デフォルトの名無しさん (ワッチョイ 37f3-zkh5)
2018/03/22(木) 22:18:28.94ID:Q5Rs9TJ/0736デフォルトの名無しさん (アウアウカー Sac3-2dLA)
2018/03/23(金) 00:38:32.35ID:2SqL+aT8a >>733
日付の表記は何種類かあるし年/月/日でも日/年/月でも表せるなら結構便利だと思う。
日付の表記は何種類かあるし年/月/日でも日/年/月でも表せるなら結構便利だと思う。
737デフォルトの名無しさん (ワッチョイ a393-4ZrE)
2018/03/23(金) 08:21:50.21ID:VCdaFb7Y0 >>733
標準に「日付を表す型」みたいのが追加され、
それ用リテラルの接尾語(のひとつ)が ""y で 2018y は2018年を表す、
さらにこの型では / は日付要素を区切る演算子としてオーバーロードされてる。
…といった感じか?
確かに虚心坦懐に / を見れば、割り算のコンピュータ向け代用記号だけでなく
日付の区切りや、ファイルシステムの階層区切りでもあるけど。
標準に「日付を表す型」みたいのが追加され、
それ用リテラルの接尾語(のひとつ)が ""y で 2018y は2018年を表す、
さらにこの型では / は日付要素を区切る演算子としてオーバーロードされてる。
…といった感じか?
確かに虚心坦懐に / を見れば、割り算のコンピュータ向け代用記号だけでなく
日付の区切りや、ファイルシステムの階層区切りでもあるけど。
738デフォルトの名無しさん (ワッチョイ 1a12-aRf7)
2018/03/23(金) 09:13:18.25ID:xSYf1jdZ0 aのb乗
a^b
a**b
a^b
a**b
739デフォルトの名無しさん (スフッ Sdba-5bpY)
2018/03/23(金) 10:31:52.82ID:fMiQp2pkd こんだけ演算子は深いのになぜか未だに[]は引数を一つしか取れない
740デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/23(金) 10:45:38.60ID:COiOJTLla 「静的」、「動的」というのがよく分からないのですが、詳しく書いてある本はありますか?
ヒープ領域がどうたらとかいうのもよく分かりません。
スタックとかいうのもよく分かりません。
詳しく解説している本を教えてください。
ヒープ領域がどうたらとかいうのもよく分かりません。
スタックとかいうのもよく分かりません。
詳しく解説している本を教えてください。
741デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/23(金) 10:48:57.55ID:COiOJTLla ロベールのC++の本を読んでいて疑問に思いました。
742デフォルトの名無しさん (ドコグロ MM92-a4pf)
2018/03/23(金) 19:28:55.75ID:FQA7q+b8M >>737
> …といった感じか?
そんな感じらしい
http://d.hatena.ne.jp/yohhoy/touch/20180322/p1
日本だと基本 年/月/日 しかないしソースコードに 睦月、如月、弥生 なんて書く奴はいないからいまいち便利さがわからんけどあちらの人にとっては便利なんだろうか
> …といった感じか?
そんな感じらしい
http://d.hatena.ne.jp/yohhoy/touch/20180322/p1
日本だと基本 年/月/日 しかないしソースコードに 睦月、如月、弥生 なんて書く奴はいないからいまいち便利さがわからんけどあちらの人にとっては便利なんだろうか
743デフォルトの名無しさん (ワッチョイ 0e8a-MDAi)
2018/03/23(金) 19:30:12.07ID:5ELqDBlL0 ポップとプッシュの概念もよく分かってないのでは
http://www.cc.kyoto-su.ac.jp/~yamada/ap/stack.html
これが分かって来るとC++に於けるバッファオーバーフローBOF攻撃の仕組みが分かって来る
http://www.cc.kyoto-su.ac.jp/~yamada/ap/stack.html
これが分かって来るとC++に於けるバッファオーバーフローBOF攻撃の仕組みが分かって来る
744デフォルトの名無しさん (ワッチョイ 0e8a-MDAi)
2018/03/23(金) 19:42:22.13ID:5ELqDBlL0745デフォルトの名無しさん (ブーイモ MMe7-Gtgj)
2018/03/23(金) 19:52:45.96ID:e6tCc9HsM 五曜は対応してくれると有り難いかも知れないけど
他はいらんな
他はいらんな
>>740
C/C++ のメモリ構造について、になります。
これは基本的な事項で、初級を脱するためにはぜひとも必要な知識なんですが、
そのわりにあまりに解説されることがないような気がします
適切な説明がないものか…
C/C++ のメモリ構造について、になります。
これは基本的な事項で、初級を脱するためにはぜひとも必要な知識なんですが、
そのわりにあまりに解説されることがないような気がします
適切な説明がないものか…
>>740
まず、メモリの管理方法として
1. スタックエリア、に格納するやり方
2. ヒープエリア、に格納するやり方
の大きく分けて二通りがあり、
2. ヒープエリア、二格納するやり方について
2-1. 「静的」:static キーワードを使うやり方
2-1. 「動的」:malloc()/free() または new/delete を使うやり方
が分類されます。
まず、メモリの管理方法として
1. スタックエリア、に格納するやり方
2. ヒープエリア、に格納するやり方
の大きく分けて二通りがあり、
2. ヒープエリア、二格納するやり方について
2-1. 「静的」:static キーワードを使うやり方
2-1. 「動的」:malloc()/free() または new/delete を使うやり方
が分類されます。
748デフォルトの名無しさん (ブーイモ MMe7-Gtgj)
2018/03/23(金) 20:10:28.07ID:e6tCc9HsM データセグメントって無くなったの?
749デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/23(金) 20:39:25.53ID:COiOJTLla750デフォルトの名無しさん (ブーイモ MM7f-Dh3i)
2018/03/23(金) 20:40:47.42ID:l1/KZZgNM >>747
一般的に、静的領域をヒープとは呼ばんだろ
一般的に、静的領域をヒープとは呼ばんだろ
751デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/23(金) 20:41:24.55ID:qmCr5Czp0 こういうのはネットで覚えたからどういう本に書いてあるかはわからん
>>749
手っ取り早いのは「マシン語」を書いてみる、マシン語(アセンブリ言語)のルーチンを C にリンクさせる、ていうのが王道ですが、
昨今はマシン語のいい教科書がない、という気がします
gcc のインラインアセンブラとかが有望だとは思いますが、まあ簡単にマシン語を記述している教材なんていうものが思いつかない、マシン語の需要というか動機がないのかもしれませんが
手っ取り早いのは「マシン語」を書いてみる、マシン語(アセンブリ言語)のルーチンを C にリンクさせる、ていうのが王道ですが、
昨今はマシン語のいい教科書がない、という気がします
gcc のインラインアセンブラとかが有望だとは思いますが、まあ簡単にマシン語を記述している教材なんていうものが思いつかない、マシン語の需要というか動機がないのかもしれませんが
>>750
うーむ、たしかに static を「ヒープ」とは言わないかもしれませんね…
うーむ、たしかに static を「ヒープ」とは言わないかもしれませんね…
754デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/23(金) 20:47:37.33ID:COiOJTLla755はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-zkh5)
2018/03/23(金) 22:32:48.28ID:ehYNLgPn0 どうだろ?
C++ の言語仕様的にはオブジェクトの寿命に違いがあるだけで、
それを実現するメカニズムについては詳細な規定があるわけではない。
まずは C++ のパラダイムの中で理解を深めれば自然に理解できるんじゃないの?
手を広げすぎても収集が付かなくなる気もするんだけどなぁ。
C++ の言語仕様的にはオブジェクトの寿命に違いがあるだけで、
それを実現するメカニズムについては詳細な規定があるわけではない。
まずは C++ のパラダイムの中で理解を深めれば自然に理解できるんじゃないの?
手を広げすぎても収集が付かなくなる気もするんだけどなぁ。
756デフォルトの名無しさん (アウアウカー Sac3-E6if)
2018/03/23(金) 22:56:58.27ID:io4DvPx8a マシン語に手を出すのは飛躍しすぎだしやめといた方がいい。ある程度C++になれてより深く理解したいと思うようになってからがいいよ。
動的、静的は大雑把に言えば、コンパイル時つまりソースを書いた時点で決まるものを静的、実行時に変化するものを静的と呼ぶ。
変数の型とかメモリ領域の確保の仕方とか、いろんな文脈で使われる。
動的、静的は大雑把に言えば、コンパイル時つまりソースを書いた時点で決まるものを静的、実行時に変化するものを静的と呼ぶ。
変数の型とかメモリ領域の確保の仕方とか、いろんな文脈で使われる。
757デフォルトの名無しさん (アウアウカー Sac3-E6if)
2018/03/23(金) 22:57:57.59ID:io4DvPx8a >>756
実行時に変化するのは動的でした
実行時に変化するのは動的でした
758デフォルトの名無しさん (ブーイモ MM26-Z/eb)
2018/03/23(金) 23:15:38.28ID:g9Gf634nM >>756
決まる、決まらないの主語は何でしょうか?
決まる、決まらないの主語は何でしょうか?
759デフォルトの名無しさん (ワッチョイ 7abd-aumg)
2018/03/24(土) 00:54:38.69ID:LvcaB4Q+0 メモリについて知りたいんならC言語から始めたら良い
Unixの移植目的で設計されたC言語は、実行効率のためほとんど必然的にメモリが透けて見える言語になったんである
『プログラミング言語C』という名著もある
これの後ろの方のmalloc()の実装サンプルまで通読したら
シングルCPUの範疇ならメモリについて嫌でもワカル
『プログラミング言語C++』と違って三日もあれば読めれる手頃な分量やしな!
Unixの移植目的で設計されたC言語は、実行効率のためほとんど必然的にメモリが透けて見える言語になったんである
『プログラミング言語C』という名著もある
これの後ろの方のmalloc()の実装サンプルまで通読したら
シングルCPUの範疇ならメモリについて嫌でもワカル
『プログラミング言語C++』と違って三日もあれば読めれる手頃な分量やしな!
760デフォルトの名無しさん (ワッチョイ a39f-aRf7)
2018/03/24(土) 01:27:57.09ID:eFb1d56B0 >>758
横だが。
何でも、だよ。
型なら静的型、動的型というし、メモリ確保なら静的確保、動的確保という。
マシン語は飛躍しすぎ。
CのエンハンスとしてC++を使うのならマシン語(インラインアセンブラ)もありだが、
C++をJava/C#/C++の並びで使うつもりならインラインアセンブラとか禁止でしょ。
というかそもそもその辺が分からない=全くの初心者がC++からやろうというのが間違い。
PythonかRubyあたりから始めとけ。(どっちも俺は知らんけど)
横だが。
何でも、だよ。
型なら静的型、動的型というし、メモリ確保なら静的確保、動的確保という。
マシン語は飛躍しすぎ。
CのエンハンスとしてC++を使うのならマシン語(インラインアセンブラ)もありだが、
C++をJava/C#/C++の並びで使うつもりならインラインアセンブラとか禁止でしょ。
というかそもそもその辺が分からない=全くの初心者がC++からやろうというのが間違い。
PythonかRubyあたりから始めとけ。(どっちも俺は知らんけど)
761デフォルトの名無しさん (ワッチョイ 36e7-0D9k)
2018/03/24(土) 01:40:25.62ID:nPxx/G4d0 コンパイラがコンパイル時に決めるものが静的、出来上がったプログラムを実行した時に決まるのが動的
C++だとそういう理解の方がわかりやすいと思う
マクロ、テンプレート、constexpr、リテラル、式や変数や関数やクラスの宣言型なんかは静的
静的なものは全部コンパイラが決めるからプログラムの実行時にはいちいち計算しないし、バグで決められなかったらコンパイラが怒る
変数やインスタンスの中身、関数呼び出し、仮想クラスのオブジェクト型なんかは動的
実行環境や食わせた入力・ファイルなんかに依存するからプログラムを実行してみないと決まらない
動的なバグはコンパイラは感知できないから客先でプログラムを実行するとクラッシュする
適当だけどだいたいこんな感じ
C++だとそういう理解の方がわかりやすいと思う
マクロ、テンプレート、constexpr、リテラル、式や変数や関数やクラスの宣言型なんかは静的
静的なものは全部コンパイラが決めるからプログラムの実行時にはいちいち計算しないし、バグで決められなかったらコンパイラが怒る
変数やインスタンスの中身、関数呼び出し、仮想クラスのオブジェクト型なんかは動的
実行環境や食わせた入力・ファイルなんかに依存するからプログラムを実行してみないと決まらない
動的なバグはコンパイラは感知できないから客先でプログラムを実行するとクラッシュする
適当だけどだいたいこんな感じ
762デフォルトの名無しさん (ワッチョイ a39f-aRf7)
2018/03/24(土) 02:04:25.06ID:eFb1d56B0 細かいようだが、
コンパイル時に確定=静的
実行時に確定=動的(=コンパイル時に確定できない)
で若干の例外(staticとか)があるが大体あってる。
「プログラミング言語C」はやめとけ。名著だが、あれは
「既にプログラミングを出来る人が、C言語を学ぶ」用であって、全くの初心者じゃ読めない。
「プログラミング言語C++」も止めとけ。あれも「既にCを使える人が…」で以下同文。
他本は総じてゴミなのも事実だが。
コンパイル時に確定=静的
実行時に確定=動的(=コンパイル時に確定できない)
で若干の例外(staticとか)があるが大体あってる。
「プログラミング言語C」はやめとけ。名著だが、あれは
「既にプログラミングを出来る人が、C言語を学ぶ」用であって、全くの初心者じゃ読めない。
「プログラミング言語C++」も止めとけ。あれも「既にCを使える人が…」で以下同文。
他本は総じてゴミなのも事実だが。
763デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/24(土) 02:06:26.05ID:Z79Bg+7E0 特定のアドレスにデータを配置して割り込みかける必要があるからじゃないだろか。
764デフォルトの名無しさん (ワッチョイ 36e7-0D9k)
2018/03/24(土) 02:09:36.82ID:nPxx/G4d0 予約語のstaticは転用されまくってわけわからなくなってるので
「静的」とソースコード上のstaticは全く別物だと思った方がいい
「静的」とソースコード上のstaticは全く別物だと思った方がいい
765デフォルトの名無しさん (ワッチョイ 4e81-zkh5)
2018/03/24(土) 02:15:26.90ID:qYWJwKPe0 その辺整理されないんだろうかね
そう言うものだという説明で
不本意ながら納得する事何十年
そう言うものだという説明で
不本意ながら納得する事何十年
766デフォルトの名無しさん (ワッチョイ a39f-aRf7)
2018/03/24(土) 02:29:56.73ID:eFb1d56B0 そんなに混乱するか?例外としてしまって問題ないと思うが。
俺は規格には詳しくないが、(というより色々混ざってしまっているが)
・Cのstatic関数=ファイルスコープに限定、externの反対 --- (A)
はC++ではなんとかされたのではなかったっけ?(どうせ使わないからどうでもいいが)
・staticクラス、あるいはクラスのstaticメソッド --- (B)
は「静的」で矛盾しないから、そもそも問題ない。
・関数内static変数でプチグローバル(みたいなやつ) --- (C)
も普通にクラスにしろ、って話でしかないし、使わないだろ。
結果、普通に使う分には特に混乱しないと思うが。
文法オタクは気にするのかもしれんが。
(C)は「動的関数にしよう」という意図があったのかもしれんが、
結局C/C++の世界は静的関数しかないから、意味無かったし。
というかそもそも俺は動的関数のメリットがよく分からん。
C#は動的関数だが、結局ロード/アンロードはアセンブリ単位=ほぼ起動時に纏めて、
であって、活用してない。
Javaは動的関数でメリットを享受してるんだっけ?(知らんから教えて)
俺は規格には詳しくないが、(というより色々混ざってしまっているが)
・Cのstatic関数=ファイルスコープに限定、externの反対 --- (A)
はC++ではなんとかされたのではなかったっけ?(どうせ使わないからどうでもいいが)
・staticクラス、あるいはクラスのstaticメソッド --- (B)
は「静的」で矛盾しないから、そもそも問題ない。
・関数内static変数でプチグローバル(みたいなやつ) --- (C)
も普通にクラスにしろ、って話でしかないし、使わないだろ。
結果、普通に使う分には特に混乱しないと思うが。
文法オタクは気にするのかもしれんが。
(C)は「動的関数にしよう」という意図があったのかもしれんが、
結局C/C++の世界は静的関数しかないから、意味無かったし。
というかそもそも俺は動的関数のメリットがよく分からん。
C#は動的関数だが、結局ロード/アンロードはアセンブリ単位=ほぼ起動時に纏めて、
であって、活用してない。
Javaは動的関数でメリットを享受してるんだっけ?(知らんから教えて)
767デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/24(土) 02:33:41.17ID:y/z0A0hW0 https://ideone.com/Epp30z
お兄ちゃん助けて、コンパイルが通らないの。
VCで開発してます。
jsonのメモリーモデル研究にとりあえずシェアードPTRの組んでそれからやっぱユニークPTRの変更しました。
色々いじってるのですが、意味不明なエラーが出てさっぱりわかりません。
自前のコードなら自分でどうにかするのですが、コードステップするとライブラリの中でえらーおこしててさっぱりです。
どなたかご教示ください。お願いします。
お兄ちゃん助けて、コンパイルが通らないの。
VCで開発してます。
jsonのメモリーモデル研究にとりあえずシェアードPTRの組んでそれからやっぱユニークPTRの変更しました。
色々いじってるのですが、意味不明なエラーが出てさっぱりわかりません。
自前のコードなら自分でどうにかするのですが、コードステップするとライブラリの中でえらーおこしててさっぱりです。
どなたかご教示ください。お願いします。
768デフォルトの名無しさん (ワッチョイ 36e7-0D9k)
2018/03/24(土) 02:46:21.51ID:nPxx/G4d0 std::vector<UniqueObject>にstd::pair<UniqueObject,UniqueObject>突っ込もうとしてんじゃん
ちゃんとエラーメッセージ読めよ
ちゃんとエラーメッセージ読めよ
769デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/24(土) 02:51:39.38ID:y/z0A0hW0 え?何行目ですか?そんなバカな・・・。え?
770デフォルトの名無しさん (ワッチョイ 4e81-1N/V)
2018/03/24(土) 03:47:44.28ID:jOWDr2Es0 static関数は恐らくリンク工程がdynamicの場合があるため
それに対してのstaticなんだろな
それに対してのstaticなんだろな
771デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/24(土) 03:55:06.40ID:Z79Bg+7E0 毎回思うんだけど、なんでgccで勉強しようとするんだろうな。
エラーメッセージ読めと言われても読めるわけがない。
一番わかりにくいメッセージを出すコンパイラで勉強する子が不憫でならない。
エラーメッセージ読めと言われても読めるわけがない。
一番わかりにくいメッセージを出すコンパイラで勉強する子が不憫でならない。
772デフォルトの名無しさん
2018/03/24(土) 04:28:06.63 >>771
VCで開発って書いてんだろーが
VCで開発って書いてんだろーが
773デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/24(土) 04:30:46.18ID:Z79Bg+7E0 確かに書いてあるな。
じゃあエラーメッセージ読めよ。
じゃあエラーメッセージ読めよ。
774デフォルトの名無しさん (ワッチョイ 4ee8-W72l)
2018/03/24(土) 05:34:00.15ID:GrrVfR010 読む気のない奴は何使ってもダメだという良い例
775デフォルトの名無しさん
2018/03/24(土) 06:12:32.26 いつも大量のWarningが出るのを真面目に対処せず放置してるからErrorが出ても理解できない罠
776デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/24(土) 06:12:34.93ID:y/z0A0hW0 https://ideone.com/FN5IrI
理屈の一つは多分。
イニシャライザーリストが要素をconstで構築するからmoveできない?
内部でconst_castするわけないしこれ詰んでない?
あるぅぇ〜。なんでじゃー。
理屈の一つは多分。
イニシャライザーリストが要素をconstで構築するからmoveできない?
内部でconst_castするわけないしこれ詰んでない?
あるぅぇ〜。なんでじゃー。
777デフォルトの名無しさん (ワッチョイ f397-zkh5)
2018/03/24(土) 06:25:04.10ID:0qB0BmlJ0 static_castの動作内容は翻訳時に全て確定する
dynamic_castの動作内容は実行時のvtableにより変化する
static_assertは翻訳時に検査を行う
assertは実行時に検査を行う
static link libraryは翻訳時に結合する
dynamic link libraryは実行時に読み込む
dynamic_castの動作内容は実行時のvtableにより変化する
static_assertは翻訳時に検査を行う
assertは実行時に検査を行う
static link libraryは翻訳時に結合する
dynamic link libraryは実行時に読み込む
778デフォルトの名無しさん (ワッチョイ a393-4ZrE)
2018/03/24(土) 06:57:20.04ID:XPzSeRia0 どうやら >>740 の質問は C++ に限定した話ではないみたいだから、
C と C++ の両方を扱うスレッドに移動するのが良いんじゃないかな。
「Cの場合は…」「ここC++のスレッドだし」レベルの齟齬が避けられるし、
このスレッドを見てないC専門の人が有用な情報を持ってるかも知れん。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
ttp://mevius.5ch.net/test/read.cgi/tech/1509780815/
スレを勃てるまでもないC/C++の質問はここで 25
ttp://mevius.5ch.net/test/read.cgi/tech/1471100645/
C と C++ の両方を扱うスレッドに移動するのが良いんじゃないかな。
「Cの場合は…」「ここC++のスレッドだし」レベルの齟齬が避けられるし、
このスレッドを見てないC専門の人が有用な情報を持ってるかも知れん。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
ttp://mevius.5ch.net/test/read.cgi/tech/1509780815/
スレを勃てるまでもないC/C++の質問はここで 25
ttp://mevius.5ch.net/test/read.cgi/tech/1471100645/
779デフォルトの名無しさん (ワッチョイ a39f-aRf7)
2018/03/24(土) 09:00:52.23ID:eFb1d56B0 >>778
質問者はそれ以前の、プログラミング一般の「静的」「動的」の区別が付いてない。
スレ移動しても意味無い。というかどこのスレでも同じ。
C++のstaticは、Cのグダグダな仕様を引きずっているからおかしくなっているだけで、
C++で新たに設定されたstaticは他言語とも整合取れてる。
これに関しては「Cが悪い」でいいと思うよ。
説明している本が無いのは、そもそもそんなところで引っかからないだろう。
教習所でハイオクの話をしても意味無い。
一通り動く物を組めるようになるまではそれにフォーカスしろ、でいい。
質問者はそれ以前の、プログラミング一般の「静的」「動的」の区別が付いてない。
スレ移動しても意味無い。というかどこのスレでも同じ。
C++のstaticは、Cのグダグダな仕様を引きずっているからおかしくなっているだけで、
C++で新たに設定されたstaticは他言語とも整合取れてる。
これに関しては「Cが悪い」でいいと思うよ。
説明している本が無いのは、そもそもそんなところで引っかからないだろう。
教習所でハイオクの話をしても意味無い。
一通り動く物を組めるようになるまではそれにフォーカスしろ、でいい。
780デフォルトの名無しさん (ワッチョイ 36e7-0D9k)
2018/03/24(土) 09:28:18.28ID:nPxx/G4d0 静的動的の区別は大事だし引っかかりやすい所でもあるでしょ
テンプレート引数に変数突っ込んでなんで動かないのぉぉとか初心者はよくあるよ
説明してる本がないって本当か?本当なら世の本がクソすぎる
テンプレート引数に変数突っ込んでなんで動かないのぉぉとか初心者はよくあるよ
説明してる本がないって本当か?本当なら世の本がクソすぎる
781デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/24(土) 10:20:48.01ID:Z79Bg+7E0 で、静的と動的の違いは何なんだよ。
ガンダムで説明してくれ。
ガンダムで説明してくれ。
782デフォルトの名無しさん (ワッチョイ 9a34-jZqL)
2018/03/24(土) 10:26:44.70ID:UtKAK1R90 staticとauto
783デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/24(土) 10:38:33.14ID:Z79Bg+7E0 ガンダムで説明できないうちは理解できてることにならないぞ。
784デフォルトの名無しさん (ワッチョイ 4e81-1N/V)
2018/03/24(土) 10:49:46.91ID:jOWDr2Es0 アインシュタインみたいなこと言ってんじゃねえよ
785デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/24(土) 11:08:12.95ID:aqtEECgt0 ガンダム言語の表現力を信じろ
786デフォルトの名無しさん (ワッチョイ a39f-aRf7)
2018/03/24(土) 11:10:56.81ID:eFb1d56B0787デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/24(土) 11:18:43.16ID:aqtEECgt0 コーディング規約にchar aznable禁止っていうのを見たことあるから
C++にガンダム要素を入れるのはタブー
C++にガンダム要素を入れるのはタブー
788デフォルトの名無しさん (ワッチョイ a39f-aRf7)
2018/03/24(土) 11:28:25.89ID:eFb1d56B0 >>780
> テンプレート引数に変数突っ込んでなんで動かないのぉぉとか初心者はよくあるよ
ねえよ
> 説明してる本がないって本当か?本当なら世の本がクソすぎる
世の本は概して糞だ。これは事実だ。
というかここら辺の認識がずれるのは世代ギャップだ。
現状の本を書いてきている世代は全員CをやってからC++をやっている。
だから「静的」「動的」の区別が付かない状態でテンプレートを触ることがなかった。
当然そこを解説した本もそんなにあるはずがない。
お前らの世代がCをやらずにいきなりC++を始め、それで色々苦労した経験があるのなら、
お前らの世代の連中が本を書かなければならない。ただそれ以前に、
俺はその必要(全くの初心者がCをやらずにC++を始める)があるとは思えないが。
入門書を書いている連中はプログラマでも宣教師でもなく、ただのテクニカルライタだ。
だから需要(売れる)があれば書くだけ。今無いのは需要がないと見られているから。
俺もこの見方については同意する。
最初のプログラミング言語がC++ってのは単純に選択を間違えてる。
> テンプレート引数に変数突っ込んでなんで動かないのぉぉとか初心者はよくあるよ
ねえよ
> 説明してる本がないって本当か?本当なら世の本がクソすぎる
世の本は概して糞だ。これは事実だ。
というかここら辺の認識がずれるのは世代ギャップだ。
現状の本を書いてきている世代は全員CをやってからC++をやっている。
だから「静的」「動的」の区別が付かない状態でテンプレートを触ることがなかった。
当然そこを解説した本もそんなにあるはずがない。
お前らの世代がCをやらずにいきなりC++を始め、それで色々苦労した経験があるのなら、
お前らの世代の連中が本を書かなければならない。ただそれ以前に、
俺はその必要(全くの初心者がCをやらずにC++を始める)があるとは思えないが。
入門書を書いている連中はプログラマでも宣教師でもなく、ただのテクニカルライタだ。
だから需要(売れる)があれば書くだけ。今無いのは需要がないと見られているから。
俺もこの見方については同意する。
最初のプログラミング言語がC++ってのは単純に選択を間違えてる。
789デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/24(土) 11:30:12.41ID:Z79Bg+7E0 C++とJavascript以外学ぶ必要があるとは思えない。
790デフォルトの名無しさん (ドコグロ MM92-a4pf)
2018/03/24(土) 12:01:13.85ID:3GLZsUhUM791デフォルトの名無しさん (ワッチョイ 5b80-AyCB)
2018/03/24(土) 12:18:09.21ID:Z79Bg+7E0 Javaは当初の理念を失ってしまったように感じる。
792デフォルトの名無しさん (ワッチョイ 8a7e-zkh5)
2018/03/24(土) 12:21:12.10ID:aqtEECgt0 JavaはJVM上で動く一言語に成り下がったからな
793デフォルトの名無しさん (ワッチョイ 36e7-0D9k)
2018/03/24(土) 17:03:55.62ID:nPxx/G4d0 今からJavaやるくらいならC#にしとけ
794デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/24(土) 18:05:30.46ID:upExxHyGa みなさん、ありがとうございました。
カーニハン他の本をまず読んでみようと思います。
>>793
そうなんですか?
Robert SedgewickらのAlgorithmsという教科書がJavaで書かれているため、
Javaの本も買って読んでいます。
ところで、学術的?な本では、オブジェクト指向言語としてC++かJavaが
大抵使われていますが、C#は使われていません。これはマイクロソフト
という一企業が設計した言語だからでしょうか?
カーニハン他の本をまず読んでみようと思います。
>>793
そうなんですか?
Robert SedgewickらのAlgorithmsという教科書がJavaで書かれているため、
Javaの本も買って読んでいます。
ところで、学術的?な本では、オブジェクト指向言語としてC++かJavaが
大抵使われていますが、C#は使われていません。これはマイクロソフト
という一企業が設計した言語だからでしょうか?
795デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/24(土) 18:06:22.88ID:upExxHyGa たとえば、プログラミングコンテスト関係の本では大抵C++が使われています。
796デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/24(土) 18:07:40.93ID:upExxHyGa そういう理由から、本当はC++ではなくC# + Visual Studioを勉強したいのですが、
C++の本(ロベール)を買って読んでいます。
C++の本(ロベール)を買って読んでいます。
797デフォルトの名無しさん (ワッチョイ 8a7e-Igml)
2018/03/24(土) 18:12:06.94ID:aqtEECgt0 そのうち大抵の言語は経験なくてもリファレンス片手に使えるようになるから好きなもん使え
798デフォルトの名無しさん (ワッチョイ f397-zkh5)
2018/03/24(土) 18:12:52.16ID:0qB0BmlJ0 C++だって元々はAT&T製なんだが
799デフォルトの名無しさん (ブーイモ MM26-Dh3i)
2018/03/24(土) 18:20:10.81ID:LkK69e8iM javaも神託に従わないと訴えられるという…
800デフォルトの名無しさん (ワッチョイ a39f-aRf7)
2018/03/24(土) 18:50:18.42ID:eFb1d56B0801デフォルトの名無しさん (スププ Sdba-kSjP)
2018/03/24(土) 19:07:41.38ID:weQnYJFBd ねーねー。
STL作った人は、共産主義国で食中毒にあって、ベッドの上で朦朧とした頭で閃いたって話だった気がしたけど、どっかにその話のソースある?
ググっても見つからないよー
STL作った人は、共産主義国で食中毒にあって、ベッドの上で朦朧とした頭で閃いたって話だった気がしたけど、どっかにその話のソースある?
ググっても見つからないよー
802デフォルトの名無しさん (ワッチョイ 9a34-jZqL)
2018/03/24(土) 19:12:27.84ID:UtKAK1R90 神託は絶望の淵やタヒぬ直前に見えたりするもんやで
803デフォルトの名無しさん (ブーイモ MM26-Dh3i)
2018/03/24(土) 19:18:50.87ID:LkK69e8iM >>801
見つけてきたぞ。何処かで発表か何かするの?
http://www.stlport.org/resources/StepanovUSA.html
ところでこのインタビューにあるtamagawa numberってなんだろう
見つけてきたぞ。何処かで発表か何かするの?
http://www.stlport.org/resources/StepanovUSA.html
ところでこのインタビューにあるtamagawa numberってなんだろう
804デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/24(土) 19:25:16.65ID:upExxHyGa805デフォルトの名無しさん (ブーイモ MM26-Dh3i)
2018/03/24(土) 19:30:46.97ID:LkK69e8iM 玉川数じゃ出てこないわけだ
806801 (スププ Sdba-kSjP)
2018/03/25(日) 06:55:48.47ID:FlrNzX5dd 皆様ありがとーございます。
論文の枕で書こうかと思いまして
論文の枕で書こうかと思いまして
807デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/25(日) 11:36:01.08ID:Lywxeunja char* str = "abc";
とは書かずに、
const char* str = "abc";
と常に書くようにと本に書いてあります。
理由は文字列リテラルは直接書き換えてはいけないからであると書かれています。
●コンパイルは通っても、実行するとエラーになることもある。
●同じ内容の他の文字列リテラルまで書き換えられてしまうことがある。
とも書かれています。
禁止されているにもかかわらず、コンパイルが通る可能性があるというのはどういう
ことなのでしょうか?
(1)コンパイルエラーが発生
(2)コンパイルは通るが実行するとエラーが発生
(3)コンパイルは通り、実行してもエラーが発生しないが、同じ内容の他の文字列
リテラルまで書き換えられてしまうという不具合が起こることがある。
コンパイラーの設計者には、(1)、(2)、(3)の選択肢があるのはなぜでしょうか?
禁止されているのだから、一律にコンパイルエラーにするのが自然に思われます。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
とは書かずに、
const char* str = "abc";
と常に書くようにと本に書いてあります。
理由は文字列リテラルは直接書き換えてはいけないからであると書かれています。
●コンパイルは通っても、実行するとエラーになることもある。
●同じ内容の他の文字列リテラルまで書き換えられてしまうことがある。
とも書かれています。
禁止されているにもかかわらず、コンパイルが通る可能性があるというのはどういう
ことなのでしょうか?
(1)コンパイルエラーが発生
(2)コンパイルは通るが実行するとエラーが発生
(3)コンパイルは通り、実行してもエラーが発生しないが、同じ内容の他の文字列
リテラルまで書き換えられてしまうという不具合が起こることがある。
コンパイラーの設計者には、(1)、(2)、(3)の選択肢があるのはなぜでしょうか?
禁止されているのだから、一律にコンパイルエラーにするのが自然に思われます。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
808デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/25(日) 11:39:58.12ID:Lywxeunja const char* str = "abc";
const char ca[] = {'a', 'b', 'c', '\0'};
の二つは同じことだと思っていましたが、これは違うということでしょうか?
const char* str = "abc";
では、"abc"をある場所に格納しておき、それを使いまわしたりすることがある
ということでしょうか?
例えば、
const char* str1 = "abc";
const char* str2 = "abc";
と書いたときに、 str1 == str2 になることがあるということでしょうか?
一方、
const char ca1[] = {'a', 'b', 'c', '\0'};
const char ca2[] = {'a', 'b', 'c', '\0'};
と書いた場合には、それぞれ、別に格納場所が確保されるということでしょうか? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
const char ca[] = {'a', 'b', 'c', '\0'};
の二つは同じことだと思っていましたが、これは違うということでしょうか?
const char* str = "abc";
では、"abc"をある場所に格納しておき、それを使いまわしたりすることがある
ということでしょうか?
例えば、
const char* str1 = "abc";
const char* str2 = "abc";
と書いたときに、 str1 == str2 になることがあるということでしょうか?
一方、
const char ca1[] = {'a', 'b', 'c', '\0'};
const char ca2[] = {'a', 'b', 'c', '\0'};
と書いた場合には、それぞれ、別に格納場所が確保されるということでしょうか? 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
809デフォルトの名無しさん (ブーイモ MM26-Dh3i)
2018/03/25(日) 11:41:04.91ID:tMBl9Z88M810デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/25(日) 11:44:30.72ID:Lywxeunja すみません。
カーニハンらの本の日本語版のp.127に書いてありました。
char amessage[] = "now is the time";
char *pmessage = "now is the time";
の違いについてです。
そして、文字列の内容を変えようとすると、その結果は不定となる
と書かれいます。なぜ不定としているのかについては理由は書いてありません。
カーニハンらの本の日本語版のp.127に書いてありました。
char amessage[] = "now is the time";
char *pmessage = "now is the time";
の違いについてです。
そして、文字列の内容を変えようとすると、その結果は不定となる
と書かれいます。なぜ不定としているのかについては理由は書いてありません。
811デフォルトの名無しさん (アウアウウー Sac7-zkh5)
2018/03/25(日) 11:46:43.36ID:Lywxeunja812デフォルトの名無しさん (ワッチョイ 0e8a-VY+1)
2018/03/25(日) 12:26:26.43ID:NNknxHvv0 うん過去のもうメンテナンス不能なコードは膨大なんでそうするしか仕方ないんだよ
813デフォルトの名無しさん (ワッチョイ 9a34-jZqL)
2018/03/25(日) 12:40:02.16ID:L+/M5ACh0 以前にも同じ質問出たし荒しかとおもた
814デフォルトの名無しさん
2018/03/25(日) 13:01:03.23 C++相談室で出す話題でもなかろに
815デフォルトの名無しさん (ワッチョイ 8a7e-Igml)
2018/03/25(日) 13:06:46.65ID:zn3nsIh00 一応初心者向けのスレっていう体じゃなかったのか?
816デフォルトの名無しさん
2018/03/25(日) 13:52:43.26 ここか、
C言語なら俺に聞け 145
http://mevius.2ch.net/test/read.cgi/tech/1519046038/
せめてここ向きの質問だろう
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1509780815/
C言語なら俺に聞け 145
http://mevius.2ch.net/test/read.cgi/tech/1519046038/
せめてここ向きの質問だろう
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1509780815/
817デフォルトの名無しさん (ブーイモ MMba-Gtgj)
2018/03/25(日) 15:10:26.39ID:9t80sXyiM >>810
旧K&Rつまり第一版は書換可能だったの
旧K&Rつまり第一版は書換可能だったの
818デフォルトの名無しさん
2018/03/25(日) 15:22:53.51 C++スレでK&Rの話すんなや
819デフォルトの名無しさん (ワッチョイ f397-zkh5)
2018/03/25(日) 17:38:21.10ID:S7OmeNGW0 >>807
ISO/IEC14882:2017 C.1.1の段落3で
char* p = "abc"; // valid in C, invalid in C++
となっているので、C++ではコンパイルが通ってはいけない
なぜ通ることがあるのかというと、
JIS X3014:2003 D.4で
定値文字列からの暗黙変換 文字列リテラルに対し,定値から非定値へ暗黙変換することは,推奨しない(4.2参照)。
となっており、C++03に従う限りコンパイルは通ることになっていた名残だ
ISO/IEC14882:2017 C.1.1の段落3で
char* p = "abc"; // valid in C, invalid in C++
となっているので、C++ではコンパイルが通ってはいけない
なぜ通ることがあるのかというと、
JIS X3014:2003 D.4で
定値文字列からの暗黙変換 文字列リテラルに対し,定値から非定値へ暗黙変換することは,推奨しない(4.2参照)。
となっており、C++03に従う限りコンパイルは通ることになっていた名残だ
820デフォルトの名無しさん (ワッチョイ 1a12-aRf7)
2018/03/25(日) 17:59:44.09ID:oI54xnZZ0 するなと言われてもスーパーセットなんだからC言語の記法がどこまで通じるかは重大な問題だと思う
821デフォルトの名無しさん (ワッチョイ f397-zkh5)
2018/03/25(日) 18:24:54.69ID:S7OmeNGW0 建前「それは間違い」なんだが
本音ではそのとおり
本音ではそのとおり
822はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-zkh5)
2018/03/25(日) 18:36:39.65ID:vqcfoPV60823デフォルトの名無しさん (ブーイモ MMe7-Dh3i)
2018/03/25(日) 18:55:57.82ID:HW+VfLnzM 可変長配列とか名前付きの構造体初期化とかc++に取り込まれたんだっけ?
スーパーセットは20年前にとっくに終わったんじゃないかと。
すでに導入されてたらスマソ
スーパーセットは20年前にとっくに終わったんじゃないかと。
すでに導入されてたらスマソ
824はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-zkh5)
2018/03/26(月) 05:22:15.91ID:S9VCdiyC0 >>823
たぶん入ってないな。
可変長配列 (VLA) って確か C でもオプショナルに格下げされてただろ。 (C11 から)
C++ のイニシャライザはだいぶん複雑になっちゃったから辻褄の合うようにするの大変だろうし、
もうやらないんじゃないかな。
たぶん入ってないな。
可変長配列 (VLA) って確か C でもオプショナルに格下げされてただろ。 (C11 から)
C++ のイニシャライザはだいぶん複雑になっちゃったから辻褄の合うようにするの大変だろうし、
もうやらないんじゃないかな。
825デフォルトの名無しさん (ワッチョイ 8a7e-Igml)
2018/03/26(月) 11:36:03.37ID:pTR+m2Zc0 実用レベルではほぼスーパーセットといっても差し支えない
826デフォルトの名無しさん
2018/03/26(月) 11:51:36.03 実用レベルではCがC++のサブセットだし🙄
827デフォルトの名無しさん (スフッ Sdba-5bpY)
2018/03/26(月) 12:28:17.38ID:tDSLT7/Xd 実用レベル:=C++にも存在する機能に制限されたC
828デフォルトの名無しさん (ワッチョイ 36e7-0D9k)
2018/03/26(月) 22:04:18.63ID:cCKTbT1E0 C11の_GenericとかそれCで敢えてやる必要あるの?って思う
829デフォルトの名無しさん (ワッチョイ b6e9-5bpY)
2018/03/26(月) 23:52:36.66ID:TogAHTIh0 微妙に使い辛い機能だし分からんでもないけど、本当の名前がちゃんと見えてるのはちょっと安心感
830デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/26(月) 23:58:29.09ID:bouVP8Z10831デフォルトの名無しさん (ワッチョイ b69b-g2oz)
2018/03/27(火) 01:36:13.83ID:tW2Kdf3t0 あるクラスAのラッパークラスWで
A&を受け取る場合はWの全てのメソッドが使えて
const A&を受け取る場合はWのconstメソッドだけが使えるように制限する設計って
ありましたっけ?
A&を受け取る場合はWの全てのメソッドが使えて
const A&を受け取る場合はWのconstメソッドだけが使えるように制限する設計って
ありましたっけ?
832デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/27(火) 01:42:41.92ID:6oSpwfuc0 おーばーらいど。
833デフォルトの名無しさん (ワッチョイ 9a34-jZqL)
2018/03/27(火) 06:31:21.75ID:m3riabwu0 あとは operator -> でポインタ返すやり方とかだな
834デフォルトの名無しさん
2018/03/27(火) 06:53:48.55 >>831
制限っていうのは、コンパイルエラーにしたいの?
制限っていうのは、コンパイルエラーにしたいの?
835デフォルトの名無しさん (ワッチョイ b69b-g2oz)
2018/03/27(火) 07:01:18.53ID:tW2Kdf3t0 A a0;
const A a1;
W w0(a0);//OK
W w1(a1);//NG
const W w2(a1);//OK
const W w3(a0);//OK
で、Wの非constメソッドには必ずconstメソッドが対応して存在している
みたいな
const A a1;
W w0(a0);//OK
W w1(a1);//NG
const W w2(a1);//OK
const W w3(a0);//OK
で、Wの非constメソッドには必ずconstメソッドが対応して存在している
みたいな
836デフォルトの名無しさん (ワッチョイ a304-h0dl)
2018/03/27(火) 07:12:14.69ID:6oSpwfuc0 設計がダサい気がするけど、何に使うんだろう。
837デフォルトの名無しさん
2018/03/27(火) 07:35:02.82 >>835
NGっていうのは、コンパイルエラーにしたいの?
NGっていうのは、コンパイルエラーにしたいの?
838デフォルトの名無しさん (ワッチョイ b69b-g2oz)
2018/03/27(火) 07:36:16.27ID:tW2Kdf3t0 >>837
そうですね
そうですね
839デフォルトの名無しさん (ワッチョイ a350-XniR)
2018/03/27(火) 07:40:26.10ID:ofLFYE4b0840デフォルトの名無しさん (ワッチョイ 0723-14g7)
2018/03/27(火) 11:34:17.37ID:bA2HN2rY0 クラスを
W
MutableW (変更可能なW)
と分けるのがよく使われる現実的な解だと思う
MutableW は W の派生型として実装すると楽
>>835
>で、Wの非constメソッドには必ずconstメソッドが対応して存在している
この部分は意味不明なので聞かなかったことにしておく
W
MutableW (変更可能なW)
と分けるのがよく使われる現実的な解だと思う
MutableW は W の派生型として実装すると楽
>>835
>で、Wの非constメソッドには必ずconstメソッドが対応して存在している
この部分は意味不明なので聞かなかったことにしておく
841デフォルトの名無しさん (ワッチョイ b69b-g2oz)
2018/03/27(火) 12:08:25.74ID:tW2Kdf3t0 なるほど、ありがとうございます
842はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-zkh5)
2018/03/28(水) 16:37:44.82ID:jJD3k2j80 >>831
テンプレートにしておいて SFINAE で分岐するという方法はとれるが……。
テンプレートにしておいて SFINAE で分岐するという方法はとれるが……。
843デフォルトの名無しさん (アウアウウー Sac7-fzSc)
2018/03/28(水) 18:32:49.43ID:rzqMRle+a C言語ってこんなので就職できるらしい…
【企業】「”C言語…?どこかで見た”程度でOK」 名古屋のアテック、求人広告が話題に エンジニアの人材不足、面白求人でカバーできる?
https://asahi.5ch.net/test/read.cgi/newsplus/1522229305/
本物のC++プログラマーを募集してる某社とはえらい違いだな
【企業】「”C言語…?どこかで見た”程度でOK」 名古屋のアテック、求人広告が話題に エンジニアの人材不足、面白求人でカバーできる?
https://asahi.5ch.net/test/read.cgi/newsplus/1522229305/
本物のC++プログラマーを募集してる某社とはえらい違いだな
844デフォルトの名無しさん (ワッチョイ 8a7e-Igml)
2018/03/28(水) 20:11:10.89ID:nsQQ2hCk0 永久にPHP弄らせる要員としては十分
845デフォルトの名無しさん
2018/03/28(水) 20:50:12.70846デフォルトの名無しさん (ワッチョイ 3708-zkh5)
2018/03/28(水) 20:55:08.40ID:NO5LUaew0 上司を黙らせるスキルでしょ
盛らないでね
盛らないでね
847デフォルトの名無しさん (ワッチョイ 8a7e-Igml)
2018/03/28(水) 22:09:32.87ID:nsQQ2hCk0 会社員なのだから上司が納得することだけが重要
848デフォルトの名無しさん
2018/03/28(水) 22:29:42.33 上司なんか関係ないやろ
お客さんを味方に付けることや
お客さんを味方に付けることや
849デフォルトの名無しさん (ワッチョイ a350-XniR)
2018/03/28(水) 22:33:35.60ID:fYzIlbdt0 関係あるだろ
850デフォルトの名無しさん (ワッチョイ a37f-zkh5)
2018/03/28(水) 22:46:49.55ID:2H+8IznE0 上司も客も関係無いよバカども
プログラミングの話だバカども
プログラミングの話だバカども
851はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-zkh5)
2018/03/28(水) 23:56:58.42ID:jJD3k2j80 マ板でやれ
852デフォルトの名無しさん (ワイモマー MMb3-TX0Y)
2018/03/29(木) 00:40:46.75ID:zCjdEvGWM visualstudio2017 Win32アプリケーションでSQLiteを使いたいのですが
Nugetにそれらしきものが合ったのでインストールしようとしたのですが以下のエラーでインストールできません。
https://www.nuget.org/packages/SQLite/
パッケージ 'SQLite 3.13.0' をインストールできませんでした。このパッケージを 'native,Version=v0.0' を対象とするプロジェクトにインストールしようとしていますが、
そのフレームワークと互換性があるアセンブリ参照またはコンテンツ ファイルがパッケージに含まれていません。
どうすればよいのでしょうか。
Nugetにそれらしきものが合ったのでインストールしようとしたのですが以下のエラーでインストールできません。
https://www.nuget.org/packages/SQLite/
パッケージ 'SQLite 3.13.0' をインストールできませんでした。このパッケージを 'native,Version=v0.0' を対象とするプロジェクトにインストールしようとしていますが、
そのフレームワークと互換性があるアセンブリ参照またはコンテンツ ファイルがパッケージに含まれていません。
どうすればよいのでしょうか。
853デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 00:42:57.97ID:+dX3Weor0 CoAppのタイムスタンプ調べてみて。
NuGetは捨てろ。
NuGetは捨てろ。
854デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 00:48:50.94ID:+dX3Weor0 代わりに何を使うか。
VCPKG。
ただし、MSは三年後にVCPKGも捨てているだろう。
逆に我々がVSを捨てる時期に来ている。
VCPKG。
ただし、MSは三年後にVCPKGも捨てているだろう。
逆に我々がVSを捨てる時期に来ている。
855デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 00:53:15.59ID:+dX3Weor0 MSの方針としてC++を捨ててC#に移行させるというのがあって、C++ユーザーはあの手この手で改宗を迫られる。
もはやVSでC++は苦行。
というか、WindowsでC++が苦行。
もはやVSでC++は苦行。
というか、WindowsでC++が苦行。
856デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 00:55:08.86ID:+dX3Weor0 C++を捨ててC#に移行するか、Windowsを捨ててOSXかLinuxに移行するか。
二択。
WindowsではC#が正解。
なぜならMSがそれを望んでいるから。
二択。
WindowsではC#が正解。
なぜならMSがそれを望んでいるから。
857デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/29(木) 01:05:50.70ID:xx4XvERn0 C++のチームも頑張って更新してるけどな
IDEとコンパイラは十分なのに
・パッケージマネージャーがクソ
・再起動しないとPATHが更新されない
・VSのプロジェクトが用意されていないとビルドが面倒
と環境が整備されてなさすぎる
IDEとコンパイラは十分なのに
・パッケージマネージャーがクソ
・再起動しないとPATHが更新されない
・VSのプロジェクトが用意されていないとビルドが面倒
と環境が整備されてなさすぎる
858デフォルトの名無しさん (ワッチョイ 93eb-Mlde)
2018/03/29(木) 01:09:04.86ID:y/yCqDtn0 C# + C++/CLI + C++
という選択肢
という選択肢
859デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 01:14:03.03ID:+dX3Weor0 我々が間違っている公算も高い。
我々はC++を使いこなせる。
だから、C++なら簡単にできるのになぜそうしない?と思ってしまうが、これから学ぶならC#のほうが簡単だろう。
MSがC#を推すのは正しいのかもしれない。
我々はC++を使いこなせる。
だから、C++なら簡単にできるのになぜそうしない?と思ってしまうが、これから学ぶならC#のほうが簡単だろう。
MSがC#を推すのは正しいのかもしれない。
860デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/29(木) 01:20:39.82ID:xx4XvERn0 C#はビジネス用だから
より早く大量にコードを生産することを目的としているからC++とは用途が違う
より早く大量にコードを生産することを目的としているからC++とは用途が違う
861デフォルトの名無しさん (ワッチョイ 7923-KOzE)
2018/03/29(木) 02:12:12.07ID:Hc4kPWXM0 Android でも iPhone でも Windows でも使える共通部分のコードは c++ で、
ってのを C# に変えたいのかもしれんが
別段 c++ で不自由ないしなあ…
てか c# って .Net のイメージ強すぎて単体で使える気がまるでしない
ってのを C# に変えたいのかもしれんが
別段 c++ で不自由ないしなあ…
てか c# って .Net のイメージ強すぎて単体で使える気がまるでしない
862デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/29(木) 03:27:22.16ID:T1PPEJjr0 未だにproperty実装出来ていないC++標準仕様が異常なんだぜ
そりゃMSも堪忍の尾が切れるってもんだぜ
そりゃMSも堪忍の尾が切れるってもんだぜ
863デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/29(木) 04:16:13.07ID:Ng8O1HeK0 ら、ライブラリで実装できるから・・・。
ちなみに、プロパティっぽい提案は過去出てるが、全くテーブルに乗らない。
ちなみに、プロパティっぽい提案は過去出てるが、全くテーブルに乗らない。
864デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/29(木) 04:45:16.84ID:xx4XvERn0 誰もプロパティを欲していないのである
865デフォルトの名無しさん (ワッチョイ 3181-vyEq)
2018/03/29(木) 06:44:05.72ID:izMMXIg60 俺も欲しくない
コスト予測し辛杉デフ
コスト予測し辛杉デフ
866デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/29(木) 07:38:47.09ID:LRHKAKcy0 C#はいい言語だよ
Linq便利だし
ただC++とは用途が違うってだけ
Linq便利だし
ただC++とは用途が違うってだけ
867デフォルトの名無しさん (ワッチョイ 93e7-qGf7)
2018/03/29(木) 08:06:33.99ID:qluMmKIH0 何度聞いてもプロパティが欲しいという思いが沸かないんだが
868デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/03/29(木) 08:10:21.70ID:FDAIDKLE0 ウィンドーズホンでネイティブC++とC++/CXの間を取り持つwrapperを書くのに使う
Wrapperを書くのに便利
Wrapperを書くのに便利
869デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 10:37:15.71ID:+tUOh99Na プロパティが使えたらMFCのような糞環境でUpdateDataを使わなくてよくなる
プロパティに代入で表示が変わり
プロパティからそのまま値が取り出せる
プロパティに代入で表示が変わり
プロパティからそのまま値が取り出せる
870デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 10:39:27.42ID:+dX3Weor0 しかしVisual Studioは何だってUTF-8で保存されるのをそんなに嫌うんだろうか。
あの手この手でUTF-8で保存するのを妨害してくるけど。
あの手この手でUTF-8で保存するのを妨害してくるけど。
871デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 10:40:42.80ID:+dX3Weor0 VSで開発してLinuxに移植されるのを嫌がってるんだろうかね。
その割にはgdbと接続できるようにしてるし。
その割にはgdbと接続できるようにしてるし。
872デフォルトの名無しさん (ワッチョイ 7923-KOzE)
2018/03/29(木) 10:47:23.77ID:Hc4kPWXM0873デフォルトの名無しさん (ワッチョイ d3cb-436e)
2018/03/29(木) 10:47:32.92ID:+dsdqxPO0 >>869
それはsetter/getterではできないことなんだな?
それはsetter/getterではできないことなんだな?
874デフォルトの名無しさん (スップ Sdf3-Myl/)
2018/03/29(木) 10:57:10.36ID:HNpF58Nud a.Hoge+=100;
みたいな事をできて便利だなと思うことはあるけど無けりゃないでいいわレベル
みたいな事をできて便利だなと思うことはあるけど無けりゃないでいいわレベル
875デフォルトの名無しさん (ワッチョイ 59d3-kUw7)
2018/03/29(木) 11:06:30.37ID:q+sj+Afe0 プロパティはメソッドともフィールドとも区別できるメタデータとしての活用が唯一の動機なんだが
結局のところ実行時の型システムまで整備しないととただの構文糖だしなあ
結局のところ実行時の型システムまで整備しないととただの構文糖だしなあ
876デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 11:06:41.49ID:+tUOh99Na877デフォルトの名無しさん (アウアウウー Sa45-wAfm)
2018/03/29(木) 11:10:04.25ID:jtsbgEO5a >>876
後者の方が好きだな
後者の方が好きだな
878デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 11:14:39.59ID:+tUOh99Na a.value++とかif(a.Width==100)とか
普通に書けるものをわざわざgetter setter書きたいんだな
変ってる
普通に書けるものをわざわざgetter setter書きたいんだな
変ってる
879デフォルトの名無しさん (ワッチョイ 7923-KOzE)
2018/03/29(木) 11:32:58.49ID:Hc4kPWXM0 UI とのバインディングを失笑されたら
シンタックスシュガーでこんなに楽にかける!と主張し始めたよw
そりゃ楽にかけて便利だよな。
そのためのものだもの。そこは同意する
シンタックスシュガーでこんなに楽にかける!と主張し始めたよw
そりゃ楽にかけて便利だよな。
そのためのものだもの。そこは同意する
880デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 11:35:30.24ID:+tUOh99Na GUIだけじゃなくて他にも使えるというか
他がメイン
他がメイン
881デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/29(木) 12:12:32.14ID:xx4XvERn0 >>878
そういう風にお手軽にメンバを書き換えるのは事故のもとなのでやめましょうってことでめんどくさくしたのに
戦争を知らない世代みたいな
現状でもa.value()++とかif(a.Width()==100)でできるしな
これまでのコードとの一貫性を破壊してなおかつ年代物のコンパイラに更に複雑なパースをさせて得られるものがちょっと括弧を省略するだけとは
そういう風にお手軽にメンバを書き換えるのは事故のもとなのでやめましょうってことでめんどくさくしたのに
戦争を知らない世代みたいな
現状でもa.value()++とかif(a.Width()==100)でできるしな
これまでのコードとの一貫性を破壊してなおかつ年代物のコンパイラに更に複雑なパースをさせて得られるものがちょっと括弧を省略するだけとは
882デフォルトの名無しさん (スッップ Sdb3-VlFK)
2018/03/29(木) 12:14:06.74ID:mREgEFijd プロパティのメリットは最初publicで適当に実装しといても後からgetter/setter付きのprivateに変えれる所じゃない?
883デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/29(木) 12:18:25.09ID:xx4XvERn0 変数がない状態でもテストに通るように作るべきだからpublicで変数を持たせる機会が一瞬もない
884デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 12:18:48.50ID:+dX3Weor0 C++builderってプロパティなかったっけ。
たいそう便利だったような気がするのだが、思い違いだろか。
たいそう便利だったような気がするのだが、思い違いだろか。
885デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 12:19:57.65ID:+dX3Weor0 そもそも最近のGUIビルダってC++ビルダーの影響受けまくってるような感じがする。
886デフォルトの名無しさん (ワッチョイ 9312-3n/u)
2018/03/29(木) 12:20:28.54ID:ONnwnPbh0 トップダウンで理想から考えるのが早い
どういう風に書ければ満足するんだ
どういう風に書ければ満足するんだ
887デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 12:26:29.79ID:f5JOZCzba888デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 12:28:52.39ID:f5JOZCzba c++0x()以降の理念で仕様策定だけしたらいいじゃん
基本機能を妨げないように仕様追加
使うかどうかは本人次第
誰も強制しない
基本機能を妨げないように仕様追加
使うかどうかは本人次第
誰も強制しない
889デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 12:30:14.95ID:f5JOZCzba 拡張forもautoも馬鹿みたいに文句言ってたけど今でも使うなって言う人はいるのかな
890デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/29(木) 12:31:30.92ID:+dX3Weor0 使うな!
891デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 12:31:44.70ID:f5JOZCzba わかりました使いません…
892デフォルトの名無しさん (スッップ Sdb3-VlFK)
2018/03/29(木) 12:59:19.47ID:mREgEFijd 頭かったwwww
893デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/29(木) 13:03:56.15ID:xx4XvERn0 >>887
これらを採択する人の中にGCCやMSVCの人がいないわけないじゃん
関数として扱うのか、変数として扱うのか決めなきゃいけない
そしてどうやってポインタをとるのかなど色々な問題がある
そしてさっきも言ったけど括弧を少し減らせるだけでできることが増えるわけじゃないというのが最大の問題
これらを採択する人の中にGCCやMSVCの人がいないわけないじゃん
関数として扱うのか、変数として扱うのか決めなきゃいけない
そしてどうやってポインタをとるのかなど色々な問題がある
そしてさっきも言ったけど括弧を少し減らせるだけでできることが増えるわけじゃないというのが最大の問題
894デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 13:16:13.95ID:f5JOZCzba 得意げにご高説を垂れ流してる最中に申し訳ありませんが
a.value++;
と
a.value()++;
は別物
あえてみんなスルーしてくれてるのに
a.value++;
と
a.value()++;
は別物
あえてみんなスルーしてくれてるのに
895デフォルトの名無しさん (ワッチョイ 1323-RCub)
2018/03/29(木) 13:20:41.15ID:ng76gyv10 >>894
参照返しなら同じでは?
参照返しなら同じでは?
896デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 13:33:25.09ID:f5JOZCzba ん?
参照した値を変えるとGUIの表示とか更新してくれんの?
getterとsetterあったとして実行してくれんの?
a.width()とa.widthが同じgetter的な動作してくれるのはわかるけど
参照した値を変えるとGUIの表示とか更新してくれんの?
getterとsetterあったとして実行してくれんの?
a.width()とa.widthが同じgetter的な動作してくれるのはわかるけど
897デフォルトの名無しさん (スッップ Sdb3-VlFK)
2018/03/29(木) 13:38:37.15ID:mREgEFijd アンチプロパティの人なんでそんなに必死なん?
898デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/29(木) 13:47:08.78ID:xx4XvERn0 >>896
プロキシクラス
プロキシクラス
899デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/29(木) 14:39:11.63ID:BTFPAIj5d GUIの表示を更新するように作れば更新される
900デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/29(木) 14:39:13.31ID:DoW8QBEn0 a.value()++; が参照返しとかどんだけヘボいんだよw
リファレンサのprvalueだろjk
リファレンサのprvalueだろjk
901デフォルトの名無しさん (アウアウウー Sa45-kUw7)
2018/03/29(木) 15:02:55.47ID:f5JOZCzba プロパティ不要とは言うけどそもそものプロパティの仕組みと効果はわかってないんだね
こんな人ばかり
こんな人ばかり
902デフォルトの名無しさん (ワッチョイ c1b3-tte4)
2018/03/29(木) 15:57:57.60ID:or4Xspy50 何スレか前にもプロパティの議論あったんだけどね・・
少なくともgetter/setterを自動生成する、みたいなクソな機能ではないぞ
少なくともgetter/setterを自動生成する、みたいなクソな機能ではないぞ
903はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/29(木) 16:02:08.91ID:frx7qa9h0904デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/29(木) 17:26:54.17ID:T1PPEJjr0 >>884
Builderだけtry-finallyセクション使えたり次元が違う希ガス
Builderだけtry-finallyセクション使えたり次元が違う希ガス
905デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/29(木) 20:10:56.09ID:LRHKAKcy0906デフォルトの名無しさん (ドコグロ MMa3-PArs)
2018/03/29(木) 21:38:46.24ID:1OB4BLGUM907デフォルトの名無しさん (ブーイモ MMb3-vInS)
2018/03/29(木) 21:46:54.75ID:6IJhuxisM カーンを首にしてアプリ側に振ったのが敗因だったな
膨大なdbaseの資産も全く使えなかったのはNetaWareと
同じだった
膨大なdbaseの資産も全く使えなかったのはNetaWareと
同じだった
908デフォルトの名無しさん (ワッチョイ d3cb-436e)
2018/03/30(金) 01:25:11.99ID:6elBmHqP0 >>902
え、違うの?
え、違うの?
909はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/30(金) 04:42:18.00ID:AQ2aJRgB0910デフォルトの名無しさん (ドコグロ MMa3-PArs)
2018/03/30(金) 06:43:57.86ID:MnRWcQoLM そもそも変数に見せかけると言うプロパティ自体の話とgetter/setterの自動生成の話は全く別物で>>902で比較してる意味がわからん
たぶん本人もちゃんと理解できてないんだろうな...
たぶん本人もちゃんと理解できてないんだろうな...
911デフォルトの名無しさん (オイコラミネオ MM6b-ePcA)
2018/03/30(金) 07:46:44.11ID:QwXbOxz8M >>905
例えば座標なら+=使えた方が楽じゃね
例えば座標なら+=使えた方が楽じゃね
912デフォルトの名無しさん (ブーイモ MMab-q1Nq)
2018/03/30(金) 08:33:24.78ID:x9Ml4xAFM >>909
なんだそういうことか。それも含めて単なる自動生成だと認識してたよ。
なんだそういうことか。それも含めて単なる自動生成だと認識してたよ。
913デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/03/30(金) 08:34:01.73ID:trt/A0j+0 そうやってソフトが重くなって行くわけだな
数値の += なんて軽いと思って何度も呼んだら
実は描画や保存も何度も呼ばれてしまうとか
数値の += なんて軽いと思って何度も呼んだら
実は描画や保存も何度も呼ばれてしまうとか
914デフォルトの名無しさん (ワッチョイ 417f-kUw7)
2018/03/30(金) 08:42:16.05ID:u8hlmR9G0 それはプロパティに限った問題ではないな
915デフォルトの名無しさん (スップ Sdf3-qGf7)
2018/03/30(金) 08:45:16.06ID:+sennHugd プロパティってそれ単体で取り出せるの?
それなら使えるな
それなら使えるな
916デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/30(金) 08:52:02.87ID:HVaF4kSpd 呼ばれる側 : そんな何度も呼ばれるとは思わなかった
呼ぶ側 : 重いとは思わなかった
呼ぶ側 : 重いとは思わなかった
917デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/30(金) 09:52:35.47ID:mPLnga/50 少なくともAdd()なら何かしらの関数を呼んでいることはわかる
918デフォルトの名無しさん (ワッチョイ 5be9-VlFK)
2018/03/30(金) 11:31:23.82ID:3ziE5qsO0 プロパティでもなんらかの関数が含んでいることはわかるが
919デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/30(金) 11:45:01.30ID:mPLnga/50 それがただの変数なのかプロパティなのかは調べるまでわからない
920デフォルトの名無しさん (スッップ Sdb3-VlFK)
2018/03/30(金) 11:57:28.30ID:27QTfa4qd 調べろよ
921デフォルトの名無しさん (ワッチョイ 417f-kUw7)
2018/03/30(金) 11:58:36.02ID:u8hlmR9G0 変数でも演算子がオーバーロードされてる場合もあるからな
結局調べないとダメ
結局調べないとダメ
922デフォルトの名無しさん (スッップ Sdb3-VlFK)
2018/03/30(金) 12:01:32.59ID:27QTfa4qd っていうか>>883いわく、publicな変数は有り得ないらしいし、そういう運用してるなら考えるまでもなくプロパティじゃん
923デフォルトの名無しさん (ワッチョイ c1b3-kUw7)
2018/03/30(金) 15:53:31.37ID:l98ixrSj0924デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/30(金) 17:21:54.28ID:6y8tfNRe0 C++erが通常prvalueで返しているリファレンサを、データメンバにするってことなら
テンポラリを作らなくなる分、速度的なメリットはありそうだな
# でも、俺はイヤだな
# データメンバがドカドカ増えるのがなんか気持ち悪い
# 慣れの問題っちゃそうかも知れんが
テンポラリを作らなくなる分、速度的なメリットはありそうだな
# でも、俺はイヤだな
# データメンバがドカドカ増えるのがなんか気持ち悪い
# 慣れの問題っちゃそうかも知れんが
925デフォルトの名無しさん (スップ Sdf3-qGf7)
2018/03/30(金) 17:39:33.77ID:+sennHugd >>898
言いたいことがわかった気がする
言いたいことがわかった気がする
926デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/30(金) 17:42:52.50ID:HVaF4kSpd やっとかよ
927デフォルトの名無しさん (ドコグロ MMa3-PArs)
2018/03/30(金) 20:19:26.33ID:MnRWcQoLM928デフォルトの名無しさん (ワッチョイ 5be9-VlFK)
2018/03/30(金) 20:30:23.19ID:3ziE5qsO0 自分から絡んで行ってバカ呼ばわりとはこれいかに
929デフォルトの名無しさん (ドコグロ MMa3-PArs)
2018/03/30(金) 20:51:58.09ID:MnRWcQoLM またバカが絡んできたよ w
930デフォルトの名無しさん (ワッチョイ c1b3-kUw7)
2018/03/30(金) 20:59:28.09ID:l98ixrSj0 >>927
いや、なんか根本的に誤解されてる気がするが
C#とかだと、多分プロパティ作ると自動である程度書いてくれるんだろうけど
その話じゃなくて「C++におけるpublicなGetXX(), SetXX()が暗黙的に作られる(だけ)」、みたいな誤解
(C#やBuilder知らずに議論をぱっと見するとそういう誤解しがち、俺も以前はしてたが)
があるんだよな
説明不足だったかもしれんけどIDEの支援機能の話ではない
というか前スレのリンクにあったブログの
http://ufcpp.net/study/csharp/oo_property.html?key=property#property
これが個人的にはわかりやすかった
いや、なんか根本的に誤解されてる気がするが
C#とかだと、多分プロパティ作ると自動である程度書いてくれるんだろうけど
その話じゃなくて「C++におけるpublicなGetXX(), SetXX()が暗黙的に作られる(だけ)」、みたいな誤解
(C#やBuilder知らずに議論をぱっと見するとそういう誤解しがち、俺も以前はしてたが)
があるんだよな
説明不足だったかもしれんけどIDEの支援機能の話ではない
というか前スレのリンクにあったブログの
http://ufcpp.net/study/csharp/oo_property.html?key=property#property
これが個人的にはわかりやすかった
931デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/30(金) 21:21:54.96ID:FlBD8vqz0 Javaのイメージなのかな?
あれはJavaBeansとかいうゴミ規約のせいで本当にGetXX()とSetXX()を作るだけのゴミ機能がIDEに標準装備だったりする
あれはJavaBeansとかいうゴミ規約のせいで本当にGetXX()とSetXX()を作るだけのゴミ機能がIDEに標準装備だったりする
932デフォルトの名無しさん (ワッチョイ 5be9-VlFK)
2018/03/30(金) 21:27:33.97ID:3ziE5qsO0 まあプロパティある言語触ったことないやつは勉強不足だから無視していいって言うのは一理ある
933デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/03/30(金) 21:59:35.93ID:trt/A0j+0934デフォルトの名無しさん (ブーイモ MMab-q1Nq)
2018/03/30(金) 22:16:15.58ID:8D6duvwPM お前らの書き込み見ると、プロパティがものすごい大発明なんじゃないかと錯覚するけど
変数のようにかける件を含めても糖衣構文以上のものじゃないだろ。
+=したけりゃそういうプロキシ書けばいい。
変数のようにかける件を含めても糖衣構文以上のものじゃないだろ。
+=したけりゃそういうプロキシ書けばいい。
935デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/03/30(金) 22:21:10.98ID:trt/A0j+0 お前らってだれだよ
一人だけだろプロパティ信者
一人だけだろプロパティ信者
936デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/03/30(金) 22:25:41.11ID:trt/A0j+0 これ以上言語機能を増やさなくて良い
コンパイラが規格に追い付いてなくて互換性が崩れる
コンパイラが規格に追い付いてなくて互換性が崩れる
937デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/30(金) 22:28:08.90ID:FlBD8vqz0 クソ機能というわけではないが、ものすごく便利というわけでもない
あればあったで使うけど、ないならないで困らないし、言語設計として採用するしないの判断はどっちもあり
C++は採用しない判断をした
その程度の話
あればあったで使うけど、ないならないで困らないし、言語設計として採用するしないの判断はどっちもあり
C++は採用しない判断をした
その程度の話
938デフォルトの名無しさん
2018/03/30(金) 23:12:27.73 実体が関数なら漢らしく見た目も関数にしろよwww
見た目が変数なのに処理が走るとか、見た目が割り算なのに文字列連結するとか変態野郎は死にくされやwwwww
見た目が変数なのに処理が走るとか、見た目が割り算なのに文字列連結するとか変態野郎は死にくされやwwwww
939デフォルトの名無しさん (ワッチョイ c1b3-kUw7)
2018/03/30(金) 23:32:31.76ID:l98ixrSj0 その辺はC++のコンストラクタ・デストラクタに嫌悪感を示すCユーザーが昔よく言ってた台詞と似てるw
「裏で何が起きてるかわかりづらいから嫌だ」、とかね
別に本気でプロパティ推してるわけじゃないが、いざプロキシクラスで代用しようとするとめんどい
ETなんかを仲介するとテンプレートの実体化の数でコンパイラへの負担がデカいし、
メンバ関数の呼び出しをサポートしようとすると継承が必要になるし・・・それなりに問題点はある
「裏で何が起きてるかわかりづらいから嫌だ」、とかね
別に本気でプロパティ推してるわけじゃないが、いざプロキシクラスで代用しようとするとめんどい
ETなんかを仲介するとテンプレートの実体化の数でコンパイラへの負担がデカいし、
メンバ関数の呼び出しをサポートしようとすると継承が必要になるし・・・それなりに問題点はある
940デフォルトの名無しさん (スフッ Sdb3-VlFK)
2018/03/30(金) 23:40:02.53ID:vpP76l93d941デフォルトの名無しさん (スフッ Sdb3-VlFK)
2018/03/30(金) 23:41:38.85ID:vpP76l93d >>938
それiostremディスってんの?
それiostremディスってんの?
942デフォルトの名無しさん (ワッチョイ d3cb-q1Nq)
2018/03/31(土) 00:11:17.76ID:o3PNwIlC0 >>940
お前が驚くと凄いことなん?
お前が驚くと凄いことなん?
943デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/03/31(土) 00:12:18.16ID:aFk+9CH40944デフォルトの名無しさん (ワッチョイ 2b9a-ePcA)
2018/03/31(土) 00:19:06.77ID:iyPH7JTK0 ダイヤモンド継承使われてるんだっけ
あれ使ったことないな
いらない機能だと思うなら使わないってだけだしプロパティはあった方がらくだと思うけどね
独自拡張でつけてるのもあるし
あれ使ったことないな
いらない機能だと思うなら使わないってだけだしプロパティはあった方がらくだと思うけどね
独自拡張でつけてるのもあるし
945デフォルトの名無しさん (スフッ Sdb3-VlFK)
2018/03/31(土) 00:25:31.98ID:NJ7AGlMvd946デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/31(土) 00:47:52.27ID:C63IJ9vb0 iostreamの<<チェーンが実は最近まで規格上未定義動作だった話は正直呆れた
947デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/31(土) 01:02:47.99ID:19OTzhSN0 採択されてもプロパティのアドレスをどうやって取るのかっていうことで標準化委員会で揉めて10年は停滞する
948はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 01:48:24.57ID:nFIfPX7B0 >>947
サブオブジェクトがユニークアドレスを取れなくてもいいことを示す [[no_unique_address]] 属性が C++20 のドラフトに入った。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0840r1.html
オブジェクトがユニークなアドレスを持つ原則を捨てたわけ。
これを踏襲するなら、プロパティのアドレスは取れないってことにして解決するのが自然で、揉める余地はそんなにないと思う。
実際にアドレスは存在しないわけだし、存在しないものを返しようがないじゃん。
サブオブジェクトがユニークアドレスを取れなくてもいいことを示す [[no_unique_address]] 属性が C++20 のドラフトに入った。
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0840r1.html
オブジェクトがユニークなアドレスを持つ原則を捨てたわけ。
これを踏襲するなら、プロパティのアドレスは取れないってことにして解決するのが自然で、揉める余地はそんなにないと思う。
実際にアドレスは存在しないわけだし、存在しないものを返しようがないじゃん。
949デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/31(土) 02:09:16.31ID:19OTzhSN0950デフォルトの名無しさん (ワッチョイ 9368-uaFS)
2018/03/31(土) 04:29:43.55ID:O6Ruc86y0 抽象クラス"Super"から派生した子クラス、"A", "B", "C"があったとします。
Super* obj1 = new A();
Super* obj2 = new B();
Super* obj3 = new C();
訳あって動的に作成したインスタンスobj1〜3を一度deleteしたのち
再び同じ子クラスでインスタンスを作成しようと思います。
obj2がクラスBのインスタンスであることが一目で分からない場合に
obj2がクラスBのインスタンスであることを突き止め、一度deleteし、
再度クラスBでインスタンスを作成する方法はあるでしょうか?
ちなみに必死に考えて考えついた方法ですが
クラスA, B, Cにそれぞれ「私はAクラスです」「私はBクラスです」みたいな
文字列を出力する共通メソッドをpublicで作成し、そのメソッドを実行して
帰ってきた文字列からそれがどのクラスのインスタンスか判別が付くのではないかなと思いました。
決してスマートな方法とは言えませんが・・・
もっとスマートな方法はありますか?
Super* obj1 = new A();
Super* obj2 = new B();
Super* obj3 = new C();
訳あって動的に作成したインスタンスobj1〜3を一度deleteしたのち
再び同じ子クラスでインスタンスを作成しようと思います。
obj2がクラスBのインスタンスであることが一目で分からない場合に
obj2がクラスBのインスタンスであることを突き止め、一度deleteし、
再度クラスBでインスタンスを作成する方法はあるでしょうか?
ちなみに必死に考えて考えついた方法ですが
クラスA, B, Cにそれぞれ「私はAクラスです」「私はBクラスです」みたいな
文字列を出力する共通メソッドをpublicで作成し、そのメソッドを実行して
帰ってきた文字列からそれがどのクラスのインスタンスか判別が付くのではないかなと思いました。
決してスマートな方法とは言えませんが・・・
もっとスマートな方法はありますか?
951デフォルトの名無しさん (ワッチョイ db0e-uaFS)
2018/03/31(土) 04:37:13.22ID:350O8bDz0 ・・・?
typeidじゃアカンの?
typeidじゃアカンの?
952デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 05:55:27.21ID:15qJIIAA0 class B : public Super
{
public:
Super* re_new() override
{
delete this;
return new B{};
}
};
{
public:
Super* re_new() override
{
delete this;
return new B{};
}
};
953デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/31(土) 06:37:47.25ID:C63IJ9vb0 >>948
単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
intの一時オブジェクトへのポインタ、intのぬるぽ、int_propのgetterへの関数メンバポインタ、ill-formed
どれも問題あると思う
単純に &obj.int_prop と書いた時に、この式の型と値をどうするかは難しい問題じゃない?
intの一時オブジェクトへのポインタ、intのぬるぽ、int_propのgetterへの関数メンバポインタ、ill-formed
どれも問題あると思う
954デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/31(土) 06:47:39.87ID:8va89mAu0 プロパティを関数として実装したら関数のアドレスは取れるんじゃないかなぁ。はぁ、実装依存ですか。
955デフォルトの名無しさん (アウアウカー Sadd-LLtt)
2018/03/31(土) 08:02:21.38ID:5h07DQhTa >>950
全然スマートじゃないがvisitorパターン使えば?
全然スマートじゃないがvisitorパターン使えば?
956デフォルトの名無しさん (ワッチョイ 93b3-PArs)
2018/03/31(土) 09:03:59.00ID:OaeapR1O0957デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/03/31(土) 09:14:46.66ID:HGehdmya0 つまり意識しなきゃならんてことか
じゃあ素直に関数にしろよ
じゃあ素直に関数にしろよ
958はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 09:16:04.32ID:nFIfPX7B0 >>953
一時オブジェクトへのポインタってことにする一択だと思うけどなぁ。
あくまでも「変数に見せかける」、
つまりは、ゲッタの呼出しに構文糖を付けて見かけ上だけ変数 (データメンバ) っぽいって立場を貫かないと、
余計な気を回してもわかり難さが増すだけだよ。
rvalue なのは仕方がない。
一時オブジェクトへのポインタってことにする一択だと思うけどなぁ。
あくまでも「変数に見せかける」、
つまりは、ゲッタの呼出しに構文糖を付けて見かけ上だけ変数 (データメンバ) っぽいって立場を貫かないと、
余計な気を回してもわかり難さが増すだけだよ。
rvalue なのは仕方がない。
959デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:16:21.25ID:Nj0xu+770 どうしてアドレスを取りたがるのかよくわからない
クラスのメンバ関数だってアドレス取れないだろ
クラスのメンバ関数だってアドレス取れないだろ
960デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:18:00.18ID:Nj0xu+770 ああメンバ仮想関数な
961デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/31(土) 09:18:37.44ID:8va89mAu0 >>959
メンバ関数のポインタ構文が何故あるのですか?
メンバ関数のポインタ構文が何故あるのですか?
962デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/03/31(土) 09:18:44.11ID:8va89mAu0 あー。
963デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:22:26.84ID:Nj0xu+770 訂正しただろ
仮想関数はアドレスが取れないだろ
仮想関数はアドレスが取れないだろ
964デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 09:23:29.95ID:15qJIIAA0 取れるよ、何言ってんの
そのポインタは動的結合までできる優れもの
そのポインタは動的結合までできる優れもの
965デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:25:45.36ID:Nj0xu+770 出来ないよ
何いってんの
何いってんの
966はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 09:26:00.49ID:nFIfPX7B0 >>959
変数に見せかける以上は変数と同じようにふるまうことを期待するってのは普通の要求じゃないか?
データメンバに対して操作するテンプレートはプロパティを操作するテンプレートとしても使えて欲しい。
でもまあ充分に「見せかける」ことが出来ないのなら問答無用でエラーになった方がマシではあるかもしれん。
変数に見せかける以上は変数と同じようにふるまうことを期待するってのは普通の要求じゃないか?
データメンバに対して操作するテンプレートはプロパティを操作するテンプレートとしても使えて欲しい。
でもまあ充分に「見せかける」ことが出来ないのなら問答無用でエラーになった方がマシではあるかもしれん。
967デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/03/31(土) 09:41:17.12ID:C63IJ9vb0 objがlvalueなのにobj.int_propがrvalueになるのはまずいと思うんだよなあ
うっかり関数の戻り値でその参照なんか返そうものなら相当わかりにくいバグになる
C#とかはその辺の問題どう解決してるのかしらね
うっかり関数の戻り値でその参照なんか返そうものなら相当わかりにくいバグになる
C#とかはその辺の問題どう解決してるのかしらね
968デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 09:48:31.98ID:Nj0xu+770 property int count {
>>() {return count_ ; } // getter
<<(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
};
みたいにアドレス抽出用のメソッドを追加すりゃ良いだけのような気がする
>>() {return count_ ; } // getter
<<(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
};
みたいにアドレス抽出用のメソッドを追加すりゃ良いだけのような気がする
969デフォルトの名無しさん (ワッチョイ 4150-W7mk)
2018/03/31(土) 10:00:37.36ID:HGehdmya0 コードを減らす為の規格追加でコードを増やす解決法
う〜ん
う〜ん
970はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 10:21:02.77ID:nFIfPX7B0971デフォルトの名無しさん (ワッチョイ 1908-kUw7)
2018/03/31(土) 10:29:50.12ID:15qJIIAA0972デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 10:35:19.80ID:Nj0xu+770 property int count {
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
}
この方がしっくり来るな
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
}
この方がしっくり来るな
973デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/31(土) 10:56:40.26ID:aygih7Tkd 予約語を増やすとどれだけの影響があるか
なんて考えたことはないのかな?
なんて考えたことはないのかな?
974デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/31(土) 10:57:47.19ID:aygih7Tkd まあここはC++相談室
おれが考えた最強言語を語るところじゃない
おれが考えた最強言語を語るところじゃない
975はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 11:05:17.81ID:nFIfPX7B0 opaque definition でゲッタを定義できるように拡張すればプロパティ専用の構文を導入する必要なく
プロパティを実現できるのではないかと妄想していた。
プロパティを実現できるのではないかと妄想していた。
976デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 11:10:24.41ID:Nj0xu+770 using count = int {
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
};
予約語増やさないならこんな感じに書けなくもない
() {return count_ ; } // getter
=(int cnt) {SetCount(cnt):} // setter
&() {return &count_;} // address getter
++() {return ++count; } // incrementer
};
予約語増やさないならこんな感じに書けなくもない
977デフォルトの名無しさん (ワッチョイ 5be9-VlFK)
2018/03/31(土) 11:21:25.52ID:Pb+ZodvD0 プロパティの実装の議論までここでするか?
Dと同じでいいじゃん
Dと同じでいいじゃん
978はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/03/31(土) 11:23:19.53ID:nFIfPX7B0 前提が違うものを同じには出来ないよ。
参考にすることはあると思うけど。
参考にすることはあると思うけど。
979デフォルトの名無しさん (スップ Sdf3-qGf7)
2018/03/31(土) 12:19:04.21ID:+mjd8c8id 仮想関数のアドレスが取れないという発言は何だったんだろう
980デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/03/31(土) 13:29:05.67ID:19OTzhSN0 >>950
std::pair<Super*,std::string> obj2 = std::make_pair(new B(), "ClassB");
std::pair<Super*,std::string> obj2 = std::make_pair(new B(), "ClassB");
981デフォルトの名無しさん (スップ Sdb3-W7mk)
2018/03/31(土) 13:32:44.21ID:aygih7Tkd スレチ
次スレまで引きずるなよ
次スレまで引きずるなよ
982デフォルトの名無しさん
2018/03/31(土) 13:50:16.75983デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/03/31(土) 14:23:30.31ID:aFk+9CH40 リフレクションがある言語でGUIの画面またはユーザーコントロールを作成する際に
YSIWYGで作ることをやれるIDEを作りたい、というときに、メンバー関数とプロパティーの2種類あったら便利なのや
C++にプロパティー入れたらリフレクションも来るでこれは…
もっとも上記課題解決のための技術は10年も前にWPFの登場で丸ごと過去の技術やがな…
YSIWYGで作ることをやれるIDEを作りたい、というときに、メンバー関数とプロパティーの2種類あったら便利なのや
C++にプロパティー入れたらリフレクションも来るでこれは…
もっとも上記課題解決のための技術は10年も前にWPFの登場で丸ごと過去の技術やがな…
984デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/03/31(土) 14:30:32.65ID:aFk+9CH40 ていうかWPFのコンバーターの書き方とか、メンバ関数に逆戻りやぞ…
(IValueConverter.Convert(), IValueConverter.ConvertBack(),
IMultiValueConverter.Conver(), IMultiValueConverter.ConvertBack(), ...
(IValueConverter.Convert(), IValueConverter.ConvertBack(),
IMultiValueConverter.Conver(), IMultiValueConverter.ConvertBack(), ...
985デフォルトの名無しさん (アウアウウー Sa45-uaFS)
2018/03/31(土) 15:43:53.79ID:UG1yVXDXa リフレクションはゴミとまで言わないけどc++にはいらない機能
986デフォルトの名無しさん (ワッチョイ d180-3UCh)
2018/03/31(土) 16:09:17.20ID:D1vbg0pQ0 リフレクションがあれば死なずに済んだ人もいるだろうに。
987デフォルトの名無しさん (アウアウウー Sa45-uaFS)
2018/03/31(土) 16:37:26.06ID:UG1yVXDXa デバッグでリフレクション使うのか?
988デフォルトの名無しさん (ワッチョイ d3cb-q1Nq)
2018/03/31(土) 20:24:42.16ID:o3PNwIlC0989デフォルトの名無しさん (ワッチョイ 9380-V9Xo)
2018/03/31(土) 22:27:57.63ID:u+oLKOIo0 うむごくろう。
990デフォルトの名無しさん (アウアウカー Sadd-LLtt)
2018/04/01(日) 18:13:20.31ID:JVL2cf0wa c++のfriendはprivateメンバーすべてにアクセスできてしまうけど特定の変数だけ、もしくは特定の関数だけfriendにする事は可能でしょうか?
991デフォルトの名無しさん (ブーイモ MMab-q1Nq)
2018/04/01(日) 18:43:04.30ID:nEv6CmIlM >>990
ピンプるか、○○って俺の友達の友達なんだぜーにしてしまうか、かなー
ピンプるか、○○って俺の友達の友達なんだぜーにしてしまうか、かなー
992デフォルトの名無しさん (アウアウウー Sa45-HAdz)
2018/04/01(日) 19:11:40.34ID:BG5JJopwa pimplイデオムはなんとなくわかるけど、俺の友達の友達は編集したい対象を別のクラスに分けてしまうこと?
993デフォルトの名無しさん (ワッチョイ c1f2-kUw7)
2018/04/01(日) 20:21:44.04ID:WPbk7cUz0 そういえばシステムハンガリアンはしばしば批判されるのに、pimplのpは批判されているのを見たことがないな。
994はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/04/01(日) 21:12:28.11ID:47FEpc5z0995デフォルトの名無しさん (ワッチョイ d3cb-q1Nq)
2018/04/01(日) 22:32:25.37ID:EwuQ9U5u0 (餃子が (御乱心 (されたぞー)))
996はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-kUw7)
2018/04/01(日) 23:03:08.00ID:47FEpc5z0 >>995
そこは「ハンガリアンじゃなくて半刈りやん」って言って欲しかった。
そこは「ハンガリアンじゃなくて半刈りやん」って言って欲しかった。
997デフォルトの名無しさん (アウアウカー Sadd-LLtt)
2018/04/02(月) 07:54:09.78ID:t04teqlda いやいやこんなの丸刈りやん
998デフォルトの名無しさん (ワッチョイ 19bd-kUw7)
2018/04/02(月) 09:36:33.18ID:E1iWIfmB0 >>983
YSIWYGってなに?
YSIWYGってなに?
999デフォルトの名無しさん
2018/04/02(月) 11:52:25.291000デフォルトの名無しさん (ワッチョイ 19bd-kUw7)
2018/04/02(月) 12:50:23.03ID:E1iWIfmB0 訂正だろ? 態度悪いなおまえ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 3時間 44分 41秒
新しいスレッドを立ててください。
life time: 72日 3時間 44分 41秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【結婚の壁】結婚どころか今まで恋愛経験は一切ない人も…「年収500万の壁」を突破できない中間層の苦しい現実 [ぐれ★]
- 【速報】高市首相 青森震度6強地震で負傷者30人 [蚤の市★]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
- 【動画】ママチャリまんさん「わたし女ですけど!」シャコシャコシャコシャコ 🚴‍♀❗🚛 [329329848]
- 声優・矢尾一樹の妻「治療の影響で思う様に話せない彼に、近くで仕事をしてきた人が、かっこ悪い!もう辞めなよと言った。私は許さない」 [594040874]
- 【画像】TOKIO山口達也に「いいべ」された当時のJK、性加害の反動であたしこグラドルにwww [779857986]
- おまえらスキンケアしてる?
- ぼくくん、昨年PCを組んだため値上げ回避 ちなスペック [794961135]
