C++相談室 part134

レス数が900を超えています。1000を超えると表示できなくなるよ。
2018/01/20(土) 09:05:42.21ID:mJKRg6iz0
次スレを立てる時は本文の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
2018/03/27(火) 07:12:14.69ID:6oSpwfuc0
設計がダサい気がするけど、何に使うんだろう。
837デフォルトの名無しさん
垢版 |
2018/03/27(火) 07:35:02.82
>>835
NGっていうのは、コンパイルエラーにしたいの?
2018/03/27(火) 07:36:16.27ID:tW2Kdf3t0
>>837
そうですね
2018/03/27(火) 07:40:26.10ID:ofLFYE4b0
>>836
明確な欠点を指摘出来ない時に使う言葉だな
「ダサい」
2018/03/27(火) 11:34:17.37ID:bA2HN2rY0
クラスを
W
MutableW (変更可能なW)

と分けるのがよく使われる現実的な解だと思う
MutableW は W の派生型として実装すると楽

>>835
>で、Wの非constメソッドには必ずconstメソッドが対応して存在している

この部分は意味不明なので聞かなかったことにしておく
2018/03/27(火) 12:08:25.74ID:tW2Kdf3t0
なるほど、ありがとうございます
2018/03/28(水) 16:37:44.82ID:jJD3k2j80
>>831
テンプレートにしておいて SFINAE で分岐するという方法はとれるが……。
2018/03/28(水) 18:32:49.43ID:rzqMRle+a
C言語ってこんなので就職できるらしい…

【企業】「”C言語…?どこかで見た”程度でOK」 名古屋のアテック、求人広告が話題に エンジニアの人材不足、面白求人でカバーできる?
https://asahi.5ch.net/test/read.cgi/newsplus/1522229305/

本物のC++プログラマーを募集してる某社とはえらい違いだな
2018/03/28(水) 20:11:10.89ID:nsQQ2hCk0
永久にPHP弄らせる要員としては十分
845デフォルトの名無しさん
垢版 |
2018/03/28(水) 20:50:12.70
>>843
言語ヲタなんてプロジェクトに一人いれば十分だし

兵隊は言語の知識よりコミュニケーション能力、報連相、Excel方眼紙スキルが大事よ
2018/03/28(水) 20:55:08.40ID:NO5LUaew0
上司を黙らせるスキルでしょ
盛らないでね
2018/03/28(水) 22:09:32.87ID:nsQQ2hCk0
会社員なのだから上司が納得することだけが重要
848デフォルトの名無しさん
垢版 |
2018/03/28(水) 22:29:42.33
上司なんか関係ないやろ

お客さんを味方に付けることや
2018/03/28(水) 22:33:35.60ID:fYzIlbdt0
関係あるだろ
850デフォルトの名無しさん (ワッチョイ a37f-zkh5)
垢版 |
2018/03/28(水) 22:46:49.55ID:2H+8IznE0
上司も客も関係無いよバカども
プログラミングの話だバカども
2018/03/28(水) 23:56:58.42ID:jJD3k2j80
マ板でやれ
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' を対象とするプロジェクトにインストールしようとしていますが、
そのフレームワークと互換性があるアセンブリ参照またはコンテンツ ファイルがパッケージに含まれていません。

どうすればよいのでしょうか。
853デフォルトの名無しさん (ワッチョイ d180-3UCh)
垢版 |
2018/03/29(木) 00:42:57.97ID:+dX3Weor0
CoAppのタイムスタンプ調べてみて。
NuGetは捨てろ。
854デフォルトの名無しさん (ワッチョイ d180-3UCh)
垢版 |
2018/03/29(木) 00:48:50.94ID:+dX3Weor0
代わりに何を使うか。
VCPKG。
ただし、MSは三年後にVCPKGも捨てているだろう。
逆に我々がVSを捨てる時期に来ている。
855デフォルトの名無しさん (ワッチョイ d180-3UCh)
垢版 |
2018/03/29(木) 00:53:15.59ID:+dX3Weor0
MSの方針としてC++を捨ててC#に移行させるというのがあって、C++ユーザーはあの手この手で改宗を迫られる。
もはやVSでC++は苦行。
というか、WindowsでC++が苦行。
856デフォルトの名無しさん (ワッチョイ d180-3UCh)
垢版 |
2018/03/29(木) 00:55:08.86ID:+dX3Weor0
C++を捨ててC#に移行するか、Windowsを捨ててOSXかLinuxに移行するか。
二択。
WindowsではC#が正解。
なぜならMSがそれを望んでいるから。
2018/03/29(木) 01:05:50.70ID:xx4XvERn0
C++のチームも頑張って更新してるけどな
IDEとコンパイラは十分なのに
・パッケージマネージャーがクソ
・再起動しないとPATHが更新されない
・VSのプロジェクトが用意されていないとビルドが面倒
と環境が整備されてなさすぎる
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#を推すのは正しいのかもしれない。
2018/03/29(木) 01:20:39.82ID:xx4XvERn0
C#はビジネス用だから
より早く大量にコードを生産することを目的としているからC++とは用途が違う
2018/03/29(木) 02:12:12.07ID:Hc4kPWXM0
Android でも iPhone でも Windows でも使える共通部分のコードは c++ で、
ってのを C# に変えたいのかもしれんが
別段 c++ で不自由ないしなあ…

てか c# って .Net のイメージ強すぎて単体で使える気がまるでしない
2018/03/29(木) 03:27:22.16ID:T1PPEJjr0
未だにproperty実装出来ていないC++標準仕様が異常なんだぜ
そりゃMSも堪忍の尾が切れるってもんだぜ
2018/03/29(木) 04:16:13.07ID:Ng8O1HeK0
ら、ライブラリで実装できるから・・・。
ちなみに、プロパティっぽい提案は過去出てるが、全くテーブルに乗らない。
2018/03/29(木) 04:45:16.84ID:xx4XvERn0
誰もプロパティを欲していないのである
2018/03/29(木) 06:44:05.72ID:izMMXIg60
俺も欲しくない
コスト予測し辛杉デフ
2018/03/29(木) 07:38:47.09ID:LRHKAKcy0
C#はいい言語だよ
Linq便利だし

ただC++とは用途が違うってだけ
2018/03/29(木) 08:06:33.99ID:qluMmKIH0
何度聞いてもプロパティが欲しいという思いが沸かないんだが
2018/03/29(木) 08:10:21.70ID:FDAIDKLE0
ウィンドーズホンでネイティブC++とC++/CXの間を取り持つwrapperを書くのに使う
Wrapperを書くのに便利
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で保存するのを妨害してくるけど。
871デフォルトの名無しさん (ワッチョイ d180-3UCh)
垢版 |
2018/03/29(木) 10:40:42.80ID:+dX3Weor0
VSで開発してLinuxに移植されるのを嫌がってるんだろうかね。
その割にはgdbと接続できるようにしてるし。
2018/03/29(木) 10:47:23.77ID:Hc4kPWXM0
>>869
ナイナイ
今だって setFoo() だの getFoo() だの実装すりゃできるけど初学者以外はやらないだろ?
実装するにも使うにも効率が悪いからね。
2018/03/29(木) 10:47:32.92ID:+dsdqxPO0
>>869
それはsetter/getterではできないことなんだな?
874デフォルトの名無しさん (スップ Sdf3-Myl/)
垢版 |
2018/03/29(木) 10:57:10.36ID:HNpF58Nud
a.Hoge+=100;
みたいな事をできて便利だなと思うことはあるけど無けりゃないでいいわレベル
2018/03/29(木) 11:06:30.37ID:q+sj+Afe0
プロパティはメソッドともフィールドとも区別できるメタデータとしての活用が唯一の動機なんだが
結局のところ実行時の型システムまで整備しないととただの構文糖だしなあ
2018/03/29(木) 11:06:41.49ID:+tUOh99Na
>>873
A.Width+=20;

A.setWidth(A.getWidth()+20);

どっちがいい?;
2018/03/29(木) 11:10:04.25ID:jtsbgEO5a
>>876
後者の方が好きだな
2018/03/29(木) 11:14:39.59ID:+tUOh99Na
a.value++とかif(a.Width==100)とか
普通に書けるものをわざわざgetter setter書きたいんだな
変ってる
2018/03/29(木) 11:32:58.49ID:Hc4kPWXM0
UI とのバインディングを失笑されたら
シンタックスシュガーでこんなに楽にかける!と主張し始めたよw
そりゃ楽にかけて便利だよな。
そのためのものだもの。そこは同意する
2018/03/29(木) 11:35:30.24ID:+tUOh99Na
GUIだけじゃなくて他にも使えるというか
他がメイン
2018/03/29(木) 12:12:32.14ID:xx4XvERn0
>>878
そういう風にお手軽にメンバを書き換えるのは事故のもとなのでやめましょうってことでめんどくさくしたのに
戦争を知らない世代みたいな
現状でもa.value()++とかif(a.Width()==100)でできるしな
これまでのコードとの一貫性を破壊してなおかつ年代物のコンパイラに更に複雑なパースをさせて得られるものがちょっと括弧を省略するだけとは
2018/03/29(木) 12:14:06.74ID:mREgEFijd
プロパティのメリットは最初publicで適当に実装しといても後からgetter/setter付きのprivateに変えれる所じゃない?
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++ビルダーの影響受けまくってるような感じがする。
2018/03/29(木) 12:20:28.54ID:ONnwnPbh0
トップダウンで理想から考えるのが早い
どういう風に書ければ満足するんだ
2018/03/29(木) 12:26:29.79ID:f5JOZCzba
>>881
パースが面倒になるとは思えない
変数と同じ使い方なんだから変数のようにパースするだけだと思うが…

それにお前はコンパイラつくらないじゃん
2018/03/29(木) 12:28:52.39ID:f5JOZCzba
c++0x()以降の理念で仕様策定だけしたらいいじゃん
基本機能を妨げないように仕様追加

使うかどうかは本人次第
誰も強制しない
2018/03/29(木) 12:30:14.95ID:f5JOZCzba
拡張forもautoも馬鹿みたいに文句言ってたけど今でも使うなって言う人はいるのかな
890デフォルトの名無しさん (ワッチョイ d180-3UCh)
垢版 |
2018/03/29(木) 12:31:30.92ID:+dX3Weor0
使うな!
2018/03/29(木) 12:31:44.70ID:f5JOZCzba
わかりました使いません…
2018/03/29(木) 12:59:19.47ID:mREgEFijd
頭かったwwww
2018/03/29(木) 13:03:56.15ID:xx4XvERn0
>>887
これらを採択する人の中にGCCやMSVCの人がいないわけないじゃん
関数として扱うのか、変数として扱うのか決めなきゃいけない
そしてどうやってポインタをとるのかなど色々な問題がある
そしてさっきも言ったけど括弧を少し減らせるだけでできることが増えるわけじゃないというのが最大の問題
2018/03/29(木) 13:16:13.95ID:f5JOZCzba
得意げにご高説を垂れ流してる最中に申し訳ありませんが

a.value++;

a.value()++;
は別物
あえてみんなスルーしてくれてるのに
2018/03/29(木) 13:20:41.15ID:ng76gyv10
>>894
参照返しなら同じでは?
2018/03/29(木) 13:33:25.09ID:f5JOZCzba
ん?
参照した値を変えるとGUIの表示とか更新してくれんの?
getterとsetterあったとして実行してくれんの?

a.width()とa.widthが同じgetter的な動作してくれるのはわかるけど
2018/03/29(木) 13:38:37.15ID:mREgEFijd
アンチプロパティの人なんでそんなに必死なん?
2018/03/29(木) 13:47:08.78ID:xx4XvERn0
>>896
プロキシクラス
2018/03/29(木) 14:39:11.63ID:BTFPAIj5d
GUIの表示を更新するように作れば更新される
2018/03/29(木) 14:39:13.31ID:DoW8QBEn0
a.value()++; が参照返しとかどんだけヘボいんだよw
リファレンサのprvalueだろjk
2018/03/29(木) 15:02:55.47ID:f5JOZCzba
プロパティ不要とは言うけどそもそものプロパティの仕組みと効果はわかってないんだね
こんな人ばかり
2018/03/29(木) 15:57:57.60ID:or4Xspy50
何スレか前にもプロパティの議論あったんだけどね・・
少なくともgetter/setterを自動生成する、みたいなクソな機能ではないぞ
2018/03/29(木) 16:02:08.91ID:frx7qa9h0
俺もそのとき発言してた
https://mevius.5ch.net/test/read.cgi/tech/1490917669/683
2018/03/29(木) 17:26:54.17ID:T1PPEJjr0
>>884
Builderだけtry-finallyセクション使えたり次元が違う希ガス
2018/03/29(木) 20:10:56.09ID:LRHKAKcy0
>>876
A.extendWidth(20);

それを書くことが便利で必要なクラスだったらそういう操作を作るべきだな
2018/03/29(木) 21:38:46.24ID:1OB4BLGUM
>>884
あったよ
>>904も含めて当時はネイティブコードを吐くC#みたいな感じだった
もう少し頑張れるかと思ったけど、Visual Studioの便利さに負けたと思ってる
2018/03/29(木) 21:46:54.75ID:6IJhuxisM
カーンを首にしてアプリ側に振ったのが敗因だったな
膨大なdbaseの資産も全く使えなかったのはNetaWareと
同じだった
2018/03/30(金) 01:25:11.99ID:6elBmHqP0
>>902
え、違うの?
2018/03/30(金) 04:42:18.00ID:AQ2aJRgB0
>>908
違うよ。
デフォルトでのゲッタ/セッタを提供したりすることはあるけども、 >>903 で言及している通り「変数に見せかける」機能。
2018/03/30(金) 06:43:57.86ID:MnRWcQoLM
そもそも変数に見せかけると言うプロパティ自体の話とgetter/setterの自動生成の話は全く別物で>>902で比較してる意味がわからん
たぶん本人もちゃんと理解できてないんだろうな...
2018/03/30(金) 07:46:44.11ID:QwXbOxz8M
>>905
例えば座標なら+=使えた方が楽じゃね
2018/03/30(金) 08:33:24.78ID:x9Ml4xAFM
>>909
なんだそういうことか。それも含めて単なる自動生成だと認識してたよ。
2018/03/30(金) 08:34:01.73ID:trt/A0j+0
そうやってソフトが重くなって行くわけだな

数値の += なんて軽いと思って何度も呼んだら
実は描画や保存も何度も呼ばれてしまうとか
914デフォルトの名無しさん (ワッチョイ 417f-kUw7)
垢版 |
2018/03/30(金) 08:42:16.05ID:u8hlmR9G0
それはプロパティに限った問題ではないな
2018/03/30(金) 08:45:16.06ID:+sennHugd
プロパティってそれ単体で取り出せるの?
それなら使えるな
2018/03/30(金) 08:52:02.87ID:HVaF4kSpd
呼ばれる側 : そんな何度も呼ばれるとは思わなかった
呼ぶ側 : 重いとは思わなかった
2018/03/30(金) 09:52:35.47ID:mPLnga/50
少なくともAdd()なら何かしらの関数を呼んでいることはわかる
2018/03/30(金) 11:31:23.82ID:3ziE5qsO0
プロパティでもなんらかの関数が含んでいることはわかるが
2018/03/30(金) 11:45:01.30ID:mPLnga/50
それがただの変数なのかプロパティなのかは調べるまでわからない
2018/03/30(金) 11:57:28.30ID:27QTfa4qd
調べろよ
921デフォルトの名無しさん (ワッチョイ 417f-kUw7)
垢版 |
2018/03/30(金) 11:58:36.02ID:u8hlmR9G0
変数でも演算子がオーバーロードされてる場合もあるからな
結局調べないとダメ
2018/03/30(金) 12:01:32.59ID:27QTfa4qd
っていうか>>883いわく、publicな変数は有り得ないらしいし、そういう運用してるなら考えるまでもなくプロパティじゃん
2018/03/30(金) 15:53:31.37ID:l98ixrSj0
>>910
お前のレスの意味がわからん
実際C#もソースコード公開されてるソフトの改造程度にしか触ったことないんでちゃんと理解してないが
getter/setterの自動生成するだけのクソ機能と誤解してる人がこのスレでも前スレでも見られたから
>>902を書いただけなんだが

というか書き込む前の1〜2レスすら読めんのかお前は
2018/03/30(金) 17:21:54.28ID:6y8tfNRe0
C++erが通常prvalueで返しているリファレンサを、データメンバにするってことなら
テンポラリを作らなくなる分、速度的なメリットはありそうだな

# でも、俺はイヤだな
# データメンバがドカドカ増えるのがなんか気持ち悪い
# 慣れの問題っちゃそうかも知れんが
2018/03/30(金) 17:39:33.77ID:+sennHugd
>>898
言いたいことがわかった気がする
2018/03/30(金) 17:42:52.50ID:HVaF4kSpd
やっとかよ
2018/03/30(金) 20:19:26.33ID:MnRWcQoLM
>>923
だからそんな誤解してるのはお前と同レベルのバカだけだろ w
言語仕様の話とIDEの機能の区別もつかないアホなんて放置でいい
2018/03/30(金) 20:30:23.19ID:3ziE5qsO0
自分から絡んで行ってバカ呼ばわりとはこれいかに
2018/03/30(金) 20:51:58.09ID:MnRWcQoLM
またバカが絡んできたよ w
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
これが個人的にはわかりやすかった
2018/03/30(金) 21:21:54.96ID:FlBD8vqz0
Javaのイメージなのかな?
あれはJavaBeansとかいうゴミ規約のせいで本当にGetXX()とSetXX()を作るだけのゴミ機能がIDEに標準装備だったりする
2018/03/30(金) 21:27:33.97ID:3ziE5qsO0
まあプロパティある言語触ったことないやつは勉強不足だから無視していいって言うのは一理ある
2018/03/30(金) 21:59:35.93ID:trt/A0j+0
>>930
現状のメンバへの代入や値取得が
暗黙的に作られるgetter/setter

プロパティが採用されてもこの辺はなんら変わらないかと
2018/03/30(金) 22:16:15.58ID:8D6duvwPM
お前らの書き込み見ると、プロパティがものすごい大発明なんじゃないかと錯覚するけど
変数のようにかける件を含めても糖衣構文以上のものじゃないだろ。
+=したけりゃそういうプロキシ書けばいい。
2018/03/30(金) 22:21:10.98ID:trt/A0j+0
お前らってだれだよ
一人だけだろプロパティ信者
レス数が900を超えています。1000を超えると表示できなくなるよ。