C++相談室 part126 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/08/13(土) 11:24:45.65ID:NPYsKJkE!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part125
http://echo.2ch.net/test/read.cgi/tech/1463761261/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
0175デフォルトの名無しさん
2016/08/26(金) 12:59:54.61ID:3Yp6hByU「侮辱的だ」と繰り返すばかり
0176デフォルトの名無しさん
2016/08/26(金) 13:16:58.62ID:R92D0kaLただ特に標準出力に関してはデータを整形したいケースが多いから噛み合ってない
0177デフォルトの名無しさん
2016/08/26(金) 13:22:39.50ID:FOeYYSc0iostreamってstd::size_tを流し込めること保証されてたっけ
0178デフォルトの名無しさん
2016/08/26(金) 13:28:03.42ID:XS8ZF2FOprintf("%02x", 'A');
0179デフォルトの名無しさん
2016/08/26(金) 18:00:13.51ID:ZiaxvSyEこれわかる人いる?
deleteしたポインタにnullいれてないとおもったんだけど、それではないらしい…
0180デフォルトの名無しさん
2016/08/26(金) 18:10:38.59ID:PiJ4eTCv0181デフォルトの名無しさん
2016/08/26(金) 18:21:32.60ID:RLEpnGOrこんな超絶クソコード作る奴の頭がそもそも虫湧いてるので答えなんてないと思うよ
なんだよnewと対になっていないdeleteとか、しかもdeleteの前に無意味なnullチェックしてるし
0182デフォルトの名無しさん
2016/08/26(金) 18:23:08.82ID:RLEpnGOrマルチスレッド環境なら話にならないコードだし
0183デフォルトの名無しさん
2016/08/26(金) 18:26:56.70ID:3Yp6hByU0184デフォルトの名無しさん
2016/08/26(金) 18:35:20.55ID:RLEpnGOrViewPort::Updateは何もする必要がないのであって、Updateの冒頭でnullチェックしてreturnすればいいだろ
とにかく問題作った奴が馬鹿丸出し過ぎてイライラする
0185デフォルトの名無しさん
2016/08/26(金) 18:36:33.86ID:ZiaxvSyE腑に落ちないw
0186デフォルトの名無しさん
2016/08/26(金) 18:52:19.14ID:wMnlcyg3>>182のいうように想定してる不具合実演のサンプルコードなのか実用コードの一部なのかすら
わからんのではどうにもなあ
0187デフォルトの名無しさん
2016/08/26(金) 20:37:16.13ID:dDBcLzC2これなw
いいかげん、正式な「1byte幅の整数型」が欲しいね。
0188デフォルトの名無しさん
2016/08/26(金) 20:45:01.75ID:Xz0onrQ7これくらいなら数分で書き直せるだろ
0189デフォルトの名無しさん
2016/08/26(金) 23:13:22.52ID:mRE0T9bN描画完了通知がNullチェックしてない??
>>187
現在策定中。
0190デフォルトの名無しさん
2016/08/27(土) 08:43:16.25ID:SmFG8gRKス ク ス | | │ //
/ ス | | ッ // ク ク ||. プ //
/ // ス ク ス _ | | │ //
/ ̄ ̄\ / ス ─ | | ッ //
/ _ノ .\ / //
| ( >)(<) ___
. | ⌒(__人__) ./ ⌒ ⌒\
| ` Y⌒l / (>) (<)\
. | . 人__ ヽ / ::::::⌒(__人__)⌒ \
ヽ }| | | ` Y⌒ l__ |
ヽ ノ、| | \ 人_ ヽ /
. /^l / / ,─l ヽ \
0191デフォルトの名無しさん
2016/08/27(土) 12:49:21.98ID:06SnK2FSデストラクタでわざわざnull代入するかどうかよりdelete前にnullチェックしていることをつっこもうぜ
0192デフォルトの名無しさん
2016/08/27(土) 13:15:37.85ID:s3YfawhT0193デフォルトの名無しさん
2016/08/27(土) 21:26:23.95ID:mslVqKaF0194デフォルトの名無しさん
2016/08/27(土) 22:04:43.54ID:sEFObQolソースは?
0195デフォルトの名無しさん
2016/08/27(土) 22:19:45.68ID:nxWT+PHC0196デフォルトの名無しさん
2016/08/27(土) 22:42:36.92ID:OFUg9SIZ0197デフォルトの名無しさん
2016/08/28(日) 01:03:52.09ID:IZ16EciYhttps://cpplover.blogspot.jp/
上経由で知ったが、
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0257r1.pdf
これだと思う。
0198デフォルトの名無しさん
2016/08/28(日) 01:09:59.02ID:3Myecdh+assertならわかるんだけどね
0199デフォルトの名無しさん
2016/08/28(日) 01:19:06.19ID:jX9FVgVh0200デフォルトの名無しさん
2016/08/28(日) 01:37:02.68ID:qNvxLYrv別にdelete前にnullチェックするのは悪いことではないし、
newと対になってないdeleteとかも指摘としては噴飯もの。
まああえて言えばdelete後にnull代入しておくべきだが。
問題はforeachでautoになってるところだろ。
これだとvector内の要素ではなく、そのコピーに対して操作してることになる。
明らかに意図していない動作だろう。
0201デフォルトの名無しさん
2016/08/28(日) 01:39:40.85ID:IZ16EciY0202デフォルトの名無しさん
2016/08/28(日) 01:39:43.61ID:60yVMOKIあの超絶クソコードの中では一番どうでもいい点だな
0203デフォルトの名無しさん
2016/08/28(日) 01:41:06.73ID:qNvxLYrvお前ら学校のテストの問題とかでもケチつけてたタイプだろ?w
0204デフォルトの名無しさん
2016/08/28(日) 01:45:52.06ID:7bU6M/B0デストラクタ内でのdelete後にnullptrいれるのって何かメリットあるの?
通常の関数なら二重delete防止のためというのは分かるんだけど
デストラクタは複数回呼ばれないよね?
0205デフォルトの名無しさん
2016/08/28(日) 01:50:09.68ID:qNvxLYrvデストラクタ以外のどこか別の場所でdeleteされる可能性があるからだろう。
viewObjは外から渡された変数だから、知らないところでdeleteされてる可能性もある。
そのための防止だね。徹底するならデストラクタ内でもちゃんとnull代入しなきゃだめだけど。
0206デフォルトの名無しさん
2016/08/28(日) 01:52:56.61ID:60yVMOKI甘えてんじゃねーよこのウンコ量産野郎
0207デフォルトの名無しさん
2016/08/28(日) 01:53:52.21ID:7bU6M/B0なるほど
この問題の場合はそうですね
0208デフォルトの名無しさん
2016/08/28(日) 01:54:04.96ID:60yVMOKIバカですか?
0209デフォルトの名無しさん
2016/08/28(日) 01:54:21.49ID:lPJVAstL別の場所でdeleteされてる可能性があるとするなら、null代入があってもなくてもダメでしょ?
何言ってんの?
0210デフォルトの名無しさん
2016/08/28(日) 01:55:42.67ID:60yVMOKInullチェックが役に立つとかどういう頭してんだよ
0211デフォルトの名無しさん
2016/08/28(日) 01:55:50.77ID:qNvxLYrvごめん。一定レベル未満の人には回答しないことにする。
そこまでは面倒見切れん。
0212デフォルトの名無しさん
2016/08/28(日) 01:56:03.58ID:Ux2eHzia描画だけだから状態を変更しない可能性は高いし
vectorにいれてるくらいだからコピーコストは十分に低いんじゃないかと無理矢理
0213デフォルトの名無しさん
2016/08/28(日) 02:00:10.83ID:qNvxLYrvもちろん値型やstringとかならコピーでも問題はないよ。
でも状態を持った型だってしつこいくらいアピールされてるでしょ。
notifyして状態切り替えてうんぬんの箇所はその根拠となるよう書かれたもの。
問題を読めれば難しくはないはず。
0214デフォルトの名無しさん
2016/08/28(日) 02:01:04.63ID:jX9FVgVh0215デフォルトの名無しさん
2016/08/28(日) 02:01:08.18ID:60yVMOKIあの糞コードみたいなnewとdeleteが対になっていないようなのはその設計思想自体がバグであって
論ずる必要などはなく、こういうことやるバカは速やかにプロジェクトから排除するべし
0216デフォルトの名無しさん
2016/08/28(日) 02:02:18.11ID:lPJVAstLあ、クラス内の別の場所でdeleteを追加した場合にnull代入が要るって話してんのかな?
それだと>204への答えにはなってないし、>179の「問題」はクラス定義が全部見えてるのに、
コード追加でバグる可能性を考え始めたらきりがないでしょ。
コード変更による多重deleteの心配するなら、他の問題への対処も含めてunique_ptrを使えばいい話しだし。
0217デフォルトの名無しさん
2016/08/28(日) 02:04:40.29ID:qNvxLYrv>>211
0218デフォルトの名無しさん
2016/08/28(日) 02:06:59.88ID:jX9FVgVhやっぱり口だけか
他のフォーラムじゃあり得ないな
0219デフォルトの名無しさん
2016/08/28(日) 02:08:06.28ID:a4amypBOnullptrチェックしても別の場所でdeleteされてるかどうかなんか判断出来なくない?
ポインタのポインタ使って他所でdeleteした時にnullptr入れてるならわかるけど
0220デフォルトの名無しさん
2016/08/28(日) 02:09:26.72ID:7bU6M/B0外でdeleteされても大丈夫と理解しました
でも、デストラクタ呼び出しより先に外でdeleteされてnullptrが代入されてない場合はダメですね
0221デフォルトの名無しさん
2016/08/28(日) 02:27:55.51ID:lPJVAstL大丈夫じゃないから、騙されないで。
0222デフォルトの名無しさん
2016/08/28(日) 02:50:59.20ID:a4amypBO片方にnullptr代入したってもう片方は変わらない
これnewして直でコンストラクタに入れるんかな
それならコピーでもされない限り外部で消されることは無いけど
0223デフォルトの名無しさん
2016/08/28(日) 02:56:39.81ID:jX9FVgVh正しい使い方をしない方に全ての責任があるから考慮する必要性がない
0224デフォルトの名無しさん
2016/08/28(日) 03:50:58.71ID:VK4fyJjMそれより例外安全が考慮されていないのが気になって仕方ない
0225デフォルトの名無しさん
2016/08/28(日) 03:54:18.30ID:d5NA/60Hバグを見つける為の例題なのであって
完全なコードを示してるわけではないってのが理解できないのかな
0226デフォルトの名無しさん
2016/08/28(日) 04:21:07.87ID:hSYh5tBq簡略化したはずのコードに無意味なnullポインタチェックがあるのはなんでなん?
簡略化する前ですら冗長なのに
0227デフォルトの名無しさん
2016/08/28(日) 06:24:16.40ID:a4amypBO0228デフォルトの名無しさん
2016/08/28(日) 06:32:42.06ID:VK4fyJjM>>225の理屈だと、矛盾以外の不足は「完全なコードじゃないから」になってしまうらしいから
本当は開始・描画・終了の全てにチェックがあったのを一部省略してるだけだろう
0229デフォルトの名無しさん
2016/08/28(日) 07:20:04.01ID:ERRoyT16論文見たら全てが策定中になっちゃうのかよ
おめでてーな
0230デフォルトの名無しさん
2016/08/28(日) 07:40:09.72ID:hSYh5tBqデストラクタでdeleteする前にviewObjに対してなにかしてるって事?
もしそうならもっと糞コードやん。
viewObj自身で片付けろよと。
0231デフォルトの名無しさん
2016/08/28(日) 07:47:04.27ID:ERRoyT160232デフォルトの名無しさん
2016/08/28(日) 08:20:20.55ID:lCXt6uga>>183
0233デフォルトの名無しさん
2016/08/28(日) 21:30:38.37ID:NaGSjNyA実引数が2個以上必要なコンストラクタをexplicitにする意味ってある?
0234デフォルトの名無しさん
2016/08/28(日) 21:34:04.63ID:NaGSjNyAすみません忘れて
0235デフォルトの名無しさん
2016/08/30(火) 08:09:06.98ID:ftymYuoJf ( { p1, p2, p3 } ) // explicitだとエラー
0236デフォルトの名無しさん
2016/08/30(火) 15:46:08.79ID:0Xvfpf4xもともとC with classesとか始めた張本人がハゲなんだけど、
まあ今のC++を見てると気持ちはわかるね。
0237デフォルトの名無しさん
2016/08/30(火) 19:30:10.07ID:0Xvfpf4x1価の陰イオンとなる第17族元素である。
0238デフォルトの名無しさん
2016/08/30(火) 23:18:33.93ID:lqTGpbVFC#みたいなプロパティは欲しいけど
0239デフォルトの名無しさん
2016/08/30(火) 23:37:14.11ID:ocxqe0WR0240デフォルトの名無しさん
2016/08/30(火) 23:42:07.71ID:xMG6EfaL0241デフォルトの名無しさん
2016/08/31(水) 00:35:52.45ID:ityOLHmmプロパティの簡潔さには程遠いな
0242デフォルトの名無しさん
2016/08/31(水) 00:39:34.42ID:yHeo0PbI0243デフォルトの名無しさん
2016/08/31(水) 01:23:54.91ID:/ANAyxIkきっちり書くと更に手間かかるな
https://ideone.com/HVRzE1
C#だとこう書ける
https://ideone.com/idjL0A
0244デフォルトの名無しさん
2016/08/31(水) 01:38:11.88ID:1fkGDbVO> は?テンプレートでC#のようなプロパティどうやって実現するんだ?
今年一の名言だなw
0245デフォルトの名無しさん
2016/08/31(水) 01:57:19.27ID:6ukDv4b6ダッサ
お前C#のプロパティの便利さ全然理解してないね
0246デフォルトの名無しさん
2016/08/31(水) 01:59:51.36ID:j3ifnVdnこんな書き方で満足する人いるの?
0247デフォルトの名無しさん
2016/08/31(水) 02:07:02.38ID:BDrnIBJY理解している気配は全く無いな
0248デフォルトの名無しさん
2016/08/31(水) 02:09:05.10ID:BDrnIBJY0249デフォルトの名無しさん
2016/08/31(水) 02:21:29.37ID:/ANAyxIkアスペ
0250デフォルトの名無しさん
2016/08/31(水) 02:44:37.65ID:AgvBQXnk0251デフォルトの名無しさん
2016/08/31(水) 09:31:40.10ID:+TzIiYAW0252デフォルトの名無しさん
2016/08/31(水) 09:57:43.27ID:WLaQrr/5なんじゃこりゃ。全然違うじゃん。
これをC#のプロパティと思ってるの?
もっと普通のケース(各メンバ変数にgetメソッドとsetメソッド)
で例示してくれよ。
0253デフォルトの名無しさん
2016/08/31(水) 10:03:12.25ID:WLaQrr/5テンプレートで実装する方法を書けっつってるのに、
なんであんなひねくれた例が出てくるんだよw
class employee
{
public:
employee(int id, std::string name);
int GetID();
void SetID(int id);
std::string GetName();
void SetName(std::string name);
private:
int id;
std::string name;
}
0254デフォルトの名無しさん
2016/08/31(水) 10:03:54.93ID:sRpVtXPN0255デフォルトの名無しさん
2016/08/31(水) 10:14:08.99ID:WLaQrr/5意味ねーじゃん。
0256デフォルトの名無しさん
2016/08/31(水) 10:40:08.79ID:N4JrJ9XH0257デフォルトの名無しさん
2016/08/31(水) 11:12:33.68ID:utsO37AQ0258デフォルトの名無しさん
2016/08/31(水) 11:18:56.64ID:N4JrJ9XHテンプレートで実装する方法を書けっつってるのに、
なんであんなひねくれた例が出てくるんだよw
class employee
{
public:
employee(int id, std::string name);
__property int ID = { read = GetID, write = SetID } ;
__property std::string Name = { read = GetName, write = SetName } ;
private:
int id;
std::string name;
int GetID();
void SetID(int id);
std::string GetName();
void SetName(std::string name);
}
0259デフォルトの名無しさん
2016/08/31(水) 11:20:17.85ID:N4JrJ9XHclass employee
{
public:
employee(int id, std::string name);
__property int ID = { read = GetID, write = SetID } ;
__property std::string Name = { read = GetName, write = SetName } ;
private:
int id;
std::string name;
int GetID();
void SetID(int id);
std::string GetName();
void SetName(std::string name);
}
0260デフォルトの名無しさん
2016/08/31(水) 11:40:45.52ID:utsO37AQ0261デフォルトの名無しさん
2016/08/31(水) 11:53:46.21ID:N4JrJ9XH0262デフォルトの名無しさん
2016/08/31(水) 12:18:33.24ID:XvHw9frfQt creatorで作成しており、GUIのボタンからwin7の拡大鏡(magnify.exe)を起動したいと思っています。
問題は、shellexecuteやQProcessで実行すると拡大鏡の画面が真っ黒になり適切に使用できません。
キーボードから、winと+のショートカットでで起動すると問題なく起動すると真っ黒になることはないので、これを行いたいです。
そこで、GUIのボタンクリックでキーボードのショートカットを実行するほうほうがあれば教えていただきたいです。
よろしくお願いします
0263デフォルトの名無しさん
2016/08/31(水) 13:33:26.19ID:6ukDv4b6http://echo.2ch.net/test/read.cgi/tech/1438593408/
0264デフォルトの名無しさん
2016/08/31(水) 14:02:00.01ID:XvHw9frfQt抜きで、c++的には実現できないのでしょうか?
0265デフォルトの名無しさん
2016/08/31(水) 14:22:32.78ID:mqymnS7Z0266デフォルトの名無しさん
2016/08/31(水) 14:25:22.52ID:utsO37AQ0267デフォルトの名無しさん
2016/08/31(水) 16:18:18.52ID:f/lfR+USgetを使う時c#にはない()がいるけど
https://ideone.com/BazQ1D
0268デフォルトの名無しさん
2016/08/31(水) 16:56:40.77ID:/MnV3wL60269デフォルトの名無しさん
2016/08/31(水) 17:50:46.05ID:WLaQrr/5合格。絶対にこんなコード書かないけど、
プロパティの要件は一応満たしている。
0270デフォルトの名無しさん
2016/08/31(水) 18:02:51.48ID:N4JrJ9XH0271デフォルトの名無しさん
2016/08/31(水) 18:55:44.77ID:gRHWeOr50272デフォルトの名無しさん
2016/08/31(水) 19:41:02.78ID:YUscqvM80273デフォルトの名無しさん
2016/08/31(水) 20:06:57.16ID:XvHw9frf0274デフォルトの名無しさん
2016/08/31(水) 20:41:02.91ID:+TzIiYAW■ このスレッドは過去ログ倉庫に格納されています