【初心者歓迎】C/C++室 Ver.104【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.104【環境依存OK】 - 暇つぶし2ch821:デフォルトの名無しさん
19/04/04 17:56:45.10 4dlKQxP/.net
昔、openGLを使ってC++出遊んでたんですけど、また最近触りたくなりました
皆さんC++で何作ってますか?
個人開発規模でお願いします

822:
19/04/04 19:24:27.16 +9gozOKQ.net
>>821
昔作ったツールがひょんなことで役立っています…
あるディレクトリを別のドライブにコピーするだけのことなんですが、いや、まあ、Windows はなかなか御しがたく、path 文字列長が一定範囲を超過すると止まってしまう変てこなコマンドラインツールが未だに現役だったりするのです…
スレリンク(tech板:53番)

823:デフォルトの名無しさん
19/04/04 20:14:39.57 vPLFSwkc.net
>>822
システムコールってやつですか?
オブジェクト指向と並列処理を勉強したいと思ってるのでQtもいいかなと思ってます
どうでしょうか?

824:デフォルトの名無しさん
19/04/04 20:22:00.68 USs/shwk.net
Qtのデメリットはライセンスだけだから個人でやる分には良い選択

825:デフォルトの名無しさん
19/04/12 11:39:32.60 K5RuTlhq.net
オブジェクト指向を学ぶのにRubyあたりを使うのは
どういうデメリットが?
Pythonは「バージョン違いによる仕様変更」に
入門書レベルのコードが影響されるのであれば「良い選択とは言えない」ことになりそーだけど

826:デフォルトの名無しさん
19/04/12 12:37:54.42 oOSdboOz.net
>>825
せっかく新しい言語を学ぶなら、近い将来役に立たなくなる言語より他の役に立つ言語を選んだ方が合理的だと思う

827:デフォルトの名無しさん
19/04/12 13:47:38.12 +CDO09PL.net
pythonて破壊的な変更があったのは20年近く前なのに、未だに古い仕様で書かれた入門書が出回っているなら、オブジェクト指向学習に最適化どうかとは別に、問題な気が。

828:デフォルトの名無しさん
19/04/12 14:05:10.56 VR9mZ4dF.net
rubyは古い言語

829:デフォルトの名無しさん
19/04/12 14:50:54.53 K5RuTlhq.net
Qt5.12.2はLGPLライセンスでインストールしとけばok?
他のライセンスは初見

830:デフォルトの名無しさん
19/04/12 14:56:36.82 rTBxcnf6.net
追加パッケージを使わないのならLGPLでおk

831:デフォルトの名無しさん
19/04/12 15:06:17.42 K5RuTlhq.net
"Qt Creator 4.8.2 CDB Debugg..." と "MinGW 7.3.0" 64-bit" 入れたら Hello World の窓が表示できるようになったけど、
練習ならそんなかんじでok?

832:デフォルトの名無しさん
19/04/12 15:28:10.39 VR9mZ4dF.net
しばらく正常に動いてるように観えてても
あとで問題が顕在化して困るパターン

833:デフォルトの名無しさん
19/04/12 15:38:10.46 K5RuTlhq.net
どのような問題が発生しうるのでしょう?
もっぱら個人用の練習用とする予定

834:デフォルトの名無しさん
19/04/12 15:54:14.03 rTBxcnf6.net
Qt始めるならとりあえずこのシリーズ読もう
URLリンク(blog.qt.io)

835:デフォルトの名無しさん
19/04/12 17:06:12.27 K5RuTlhq.net
私の場合は、インストール~ "Hello World" については
URLリンク(qiita.com)
URLリンク(qiita.com)
を参考にしました。続きについては、御提示のリンク先を試してみますね

836:デフォルトの名無しさん
19/04/13 12:09:38.16 r7SUy1hn.net
ID:K5RuTlhq です
>>830
URLリンク(www3.sra.co.jp) を見て『グラフ作成パッケージQt Charts入れておいた方が便利かも』と思い
いったんアンインストールしてみたのですが、
[Qt 5.12.2 のセットアップ] の画面で
Qt Charts
Qt Data Visualization
Qt purchasing
Qt Virtual Keyboard
Qt WebEngine
Qt Network Authrozation
Qt WebGL Streming Plugin
にチェックを入れたとしても LGPL が選べるようです
サードパーティーの追加パッケージで問題となりうる…?

837:デフォルトの名無しさん
19/04/13 12:11:50.81 r7SUy1hn.net
>>832
具体的に「どのような問題が顕在化」し「どのように困る」ことになるのでしょうか
クラスとメンバ関数のみの指摘でも構わないので、示していただけませんか?
また、その問題を回避する方法は何なのでしょうか?

838:デフォルトの名無しさん
19/04/13 13:57:08.11 TvmgiEsJ.net
>>836
LGPLを選べたとしてもQt Chartsを使っていればGPLv3
GPLと非互換のライセンスのライブラリを使うなら問題になる
だがそもそも練習段階ならライセンスなど気にせずどんどん書け

839:デフォルトの名無しさん
19/04/13 20:47:38.59 r7SUy1hn.net
昔は知らんが5.12.1ならQt ChartsはLGPLで許諾されるよ?

840:デフォルトの名無しさん
19/04/13 20:48:56.62 r7SUy1hn.net
5.12.2だった

841:デフォルトの名無しさん
19/04/13 23:19:58.42 TvmgiEsJ.net
はっきりとGPLv3と書かれてる
URLリンク(www.qt.io)
Open Source->Additional features->Data visualization の?を参照

842:デフォルトの名無しさん
19/04/14 00:04:08.34 El+pt49w.net
条項はこれから確認する
>>841
インストールの操作手順からしたら
不意打ちも良いとこだなあ
Qt Charts をチェックした状態で[次へ(N)]ボタンを押したときに
「修正を受けたGPLv3」以外のラジオボタンが無効になってないと
UIとしておかしくねえか
あと「100%GPLv3と一致で修正条項なし」なん?
そうだとしたら、なおさらおかしい

843:デフォルトの名無しさん
19/04/14 00:07:28.45 El+pt49w.net
そういえば
LICENSE
などと大文字ファイル名にしないと効力が発生しないとする「糞判例がある」と聞いたことがあるけど、日本の裁判所?
ググっただけでは見つからなかった
最高裁判例なら検索結果の判決文をPDFで読める訳だがなあ
そのようなケースを敷衍すると、帰結として、Qt chartsはLGPLとなりうる
GPLv3 については逐条解説もあるから、そっちの内容も確認してみてちょ(あくまで「解説」)

844:デフォルトの名無しさん
19/04/14 00:54:57.43 El+pt49w.net
純粋に「Qt のライセンス」の話なのでスレチ?

copyright notice の表示方法の適切性について、GPLv3って基本的には明確には記載してなくね
ただし今回のケースだと、「インストーラが LGPL によるライセンスを表示した状態」で先に進める以上
0. Definitions. の第8パラグラフ(1) 反対解釈により、「GPLv3は適用されない」と読む余地がある
実際、GPLv3 につき "displays an appropriate copyright notice" してないもの

845:デフォルトの名無しさん
19/04/14 00:56:08.63 El+pt49w.net
書き込み制限受けたので続き。多分コレで終わり。
あのインストーラが表示している著作権表示は明確に LGPL だから適用条件満たしてないと解釈する余地がある、と
…わたしはただの学習者だから大騒ぎすることでもねえんだがねえ…

846:デフォルトの名無しさん
19/04/15 21:39:53.28 L7qqGgg7.net
int& a;
int &a;
どっちにすべきでしょうか

847:デフォルトの名無しさん
19/04/15 21:52:39.66 zTAvdEPs.net
好きな方で書け

848:デフォルトの名無しさん
19/04/15 21:56:00.71 dimPC8Ge.net
「すべき」というのは規格表での『shall』のことですか?
それとももっと別の意図がありますか?

849:デフォルトの名無しさん
19/04/15 22:02:16.06 1nT5zSFt.net
int & a;
int * b;

850:はちみつ餃子
19/04/15 23:26:36.86 94OTneyx.net
std::add_lvalue_reference<int>::type a;

851:デフォルトの名無しさん
19/04/16 07:00:13.97 xjyBK9QH.net
そんなこと気にする前に参照の変数を未初期化で使おうとするなよ。
みたいなツッコミを入れたくなるけど、コンパイル時にエラーが出る
間違いは必ず見落としなく直せるから実際は大きな問題じゃないよね。
「ポインタ宣言の * を型名に寄せるか変数名に寄せるか」と同じで
一貫した書き方をするかぎり、どっちでも構わんでしょ。
個人的には「変数名に寄せる」派だけど。

852:デフォルトの名無しさん
19/04/16 08:18:02.67 hl7GJiol.net
int& a, &b;
int &a, &b;
自分も後者の方がいい

853:デフォルトの名無しさん
19/04/16 08:20:49.86 GDkTCt4E.net
>>851
> 未初期化で使
コレの解釈は揺れそうだが、たとえば
int *i;
とか、
int *i;
int j;
i = &j;
とかいうかんじのことかしらん

854:デフォルトの名無しさん
19/04/16 11:22:25.45 vZl8q5zB.net
>>852
+1
ほんそれ

855:デフォルトの名無しさん
19/04/16 12:24:17.44 uqcfe1Iw.net
わからない事をここで質問しようとレスを書いてる最中に「わかった!」
ってなることが多々あるんだが、この謎の現象は何なんだ・・・

856:デフォルトの名無しさん
19/04/16 12:28:15.56 4RjIOnLA.net
自己解決パターン
質問するときに頭の中が整理される→解決
質問するために再現する必要最小限のコードを書く→問題の切り分けが出来る→解決
いろいろあるが

857:はちみつ餃子
19/04/16 13:21:34.50 XnNfa6Fy.net
>>855
何が駄目なのかわかれば解決法は自明であることが多い。
逆に言えば、解決法がわからないときは問題が何であるかわかってなかったりするんだよ。
だから、きちんとした形に質問をまとめれたなら、それはもうほとんど解答でもあるんだ。
この手法を利用してバグを取り除くやり方としてラバーダックデバッギングというものが知られている。

858:デフォルトの名無しさん
19/04/16 13:51:09.84 WfxisTJA.net
C++erならRust学べって風潮嫌い
なんで学習コストがある言語を2つも学ばないといけないのかと思うし

859:847
19/04/16 17:31:42.92 xjyBK9QH.net
>>853
あんまり大それた意見とではなくて
void func()
{
 int &a;
...
}
と宣言したら、参照先不明の &a を作ろうとしてるから
必ずコンパイルエラーになるじゃろ、程度の指摘。
…ただ、この投稿を書こうとして気がついたんだけど、
class samp {
 int &a;
...
};
てな具合に、クラスのメンバとしての宣言ならエラーにならないね。
ちゃんとコンストラクタで a に参照先を与えるなら許される。

要するに >>851 の前半部分は間違ってた、ということ。
正しい場合もあるけど、常に正しいわけじゃない。

860:デフォルトの名無しさん
19/04/16 17:55:46.56 LqBdGBd1.net
その場合でもコンストラクタで初期化してなかったらエラー出るんだから
説明自体は間違ってない

861:デフォルトの名無しさん
19/04/16 21:38:13.69 5Rly8M3u.net
>>857
テディベアをおいておくというエピソードなら有名だね

862:デフォルトの名無しさん
19/04/16 22:14:36.94 dFuxCqAG.net
>>858
難しいことも違った方向から見るとわかりやすくなることもある。

863:デフォルトの名無しさん
19/04/19 11:24:45.99 qKKG75KJ.net
質問です。
cinの戻り値のistream&がなんでif(cin)みたいに真偽判定に使えるのかが発端です。
URLリンク(stackoverflow.com)
こことか見たんですけど、
1.istreamはbasic_iosを継承してて、
2.basic_iosで型変換演算子explicit operator bool() const;が定義されてる
ってとこまでは理解しました
ここからが質問なんですけどこの型変換ってのは勝手に行われるもんなんですかね
if(something)って書いたらif(bool(something))っていつもやってるんでしょうか

864:デフォルトの名無しさん
19/04/19 11:40:22.57 ymX8VCBl.net
intで参照したらEOF

865:デフォルトの名無しさん
19/04/19 12:05:08.07 r9r2BfdP.net
型変換以前に0やnullポインタを評価するとfalse、0以外の値はtrueと評価されると決まっているからだろ。
あと暗黙の型変換はよく起こる。

866:デフォルトの名無しさん
19/04/19 12:08:35.86 lgg24wim.net
if 文の条件判定部は bool 型を要求してる前提で解釈,翻訳してるんじゃない

867:はちみつ餃子
19/04/19 12:13:29.89 mypEidUJ.net
>>863
yes.
条件部はブールを要求し、もしブールでない場合は常に型変換する。

868:デフォルトの名無しさん
19/04/20 09:49:03.76 9bTTnEnG.net
前橋和弥さんのC言語ポインタ完全制覇という本で、
PCの環境(CPUの種類など)によってデータのメモリ上の配置は異なる
(構造体のパディングをはじめ、ただの単体のintでさえバイトオーダーが異なる(ワークステーションではビッグエンディアン採用だったりする))
ので、メモリの内容をバイナリでディスク上のファイルに出力したデータは別環境で読み込んで使おうと思ってはいけない
というような事が書いてありましたが、この話はWindows以外の環境や古い環境を前提とした話なのでしょうか?
同書にWindowsではBMPファイルをfwriteでファイルへダンプしていていかにもWindowsらしいとも書いてあるので、
Windows環境ならゲームのセーブデータとしてクラスをまるごとfwriteでバイナリ出力したファイルを別PCでロードしても問題ないのでしょうか?
(Xeonとかワークステーションマザーとか関係なしに、IntelCPU&Windowsの環境ならばリトルエンディアンで統一されている?)
(Macではビッグエンディアンになるが、Windows環境のみ対応のゲームを作る上では無視してよい?)
という認識は間違っているでしょうか?
パディングの違いなどもWindowsやVisualStudioが自動で良きに計らってくれるのならありがたいのですが…

869:デフォルトの名無しさん
19/04/20 09:54:32.44 gSzU4BUh.net
windows間だから「別環境」ではなく「同じ環境」
だからwindowsでも同じ
そのbmpデータをmacに持って行っても使えない
なので磁気コアをダンプして永続化したようなデータは、他の全ての環境で使えない
60年代くらいから知られている

870:デフォルトの名無しさん
19/04/20 12:00:13.06 9bTTnEnG.net
>>869
Windows環境であれば、別PC(別ハード)でも同環境とみなして良いのですね
>>WindowsではBMPファイルをfwriteでファイルへダンプしていていかにもWindowsらしいとも書いてある
読み直したら、違ってましたm(_ _)m
可変長構造体の節で、
WindowsではBMPをfwriteなどで可変長構造体まるごとダンプしていて、
BMPのような他の環境にもっていく可能性が高いファイルを構造体まるごとダンプしているのがWindowsらしい
というような内容でした
Windows級の一流プログラマーでも構造体まるごと出力を使っているのであれば、
ゲームのセーブデータで構造体やクラスをまるごとバイナリ出力しても問題ないととらえてよいのかな?

871:デフォルトの名無しさん
19/04/20 12:30:10.75 4KhiFNHT.net
>>870
bmpファイルには仕様があるので「Windowsのプログラマがどうたら」なんぞ関係無く仕様に従って読み書きすべし
(現実には仕様に従わない入出力をやらかすアプリ毎に対処することはあるが)
自分で定義した構造体でも外部に公開するなら仕様を決めそれに準ずるべし
公開しないならそれこそ構造体丸ごとダンプなり好きにすれば良い
実際にそういう実装は珍しいものじゃない
どうせ環境の変化で困るとしてもそれは自分だけだからね


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch