C++相談室 part139

■ このスレッドは過去ログ倉庫に格納されています
2018/10/06(土) 00:59:48.54ID:CdYUXXMG0
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/

■長いソースを貼るときはここへ。■
 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/10/06(土) 08:50:42.89ID:CrcQtIJ/M
数十万行の他人が書いたソース・コードに一度でも溺れてみたらいいよ…
2018/10/06(土) 09:40:20.41ID:d9G2ZJ030
Cの頃はIDEに検索機能さえあれば、検索した結果をメモ帳にでも書きつけて行って簡単にコールグラフを作れた
なぜなら関数名はプログラムの中でほぼ一意とみなせたので、walk aroundの強力な指針となった

C++になったらそうでもなくなった
なぜなら関数名がオーバーロードされるようになった上に異なるクラスが同名のメソッドを持っているというケースが頻出する上に、
テンプレートやnamespaceまであるので
Cの頃から比べたら、解析の困難さは異次元のレベルすぎて草
現実的に解析を行えるかは、ソースコードの字面がどうかかれているかよりもクラスの意味が整理されているかに大きく依存する

もし仮に万が一、#if〜#endifで切りまくられたソースコードで正しくメソッドの定義元や呼び出し元一覧がクラスがテンプレートの
仮引数として渡されているケースについても正しく信用に足る一覧が出るIDEならちょっと欲しいかも
2018/10/06(土) 10:32:45.07ID:hM5EPMW3a
そんなあなたにdoxygen+graphviz
2018/10/06(土) 10:37:41.35ID:Gg92+MKo0
>>27
それできないとコンパイルすらできないんだけど…
2018/10/06(土) 10:59:24.19ID:GNSvvE670
コンパイラ(とそのコードを書いた本人)以外の人が把握するのが難しくなったということだろ。
ADLやらSFINAEやらで実際にどこの何が呼ばれるのか、プログラム全体をひっくり返してみないと
わからなかったりするしな。
2018/10/06(土) 11:00:25.81ID:d9G2ZJ030
>>28
doxigenは、なんかブラウザで閲覧できるようにするまでの設定がめんどくさかった思い出
およびコールグラフは出たが本当にグラフの画像しか出ない(シンボルをコピペできない)のでショボーン、
だったのでそんなにやりこんで使っていないスマンorz
それよかDOT言語が面白すぎたので遊び倒した

>>29
コンパイラのビルドとIDEのインテリセンス能力は関係ない(ハズ。LLVMは知らん
もし定義元を書き換えてエラーを起こせばエラーメッセージから呼び出し元がワカル、
という考えならテンプレートが絡んだ瞬間に目が眩んで死ぬ
2018/10/06(土) 11:48:26.03ID:Gg92+MKo0
>>31
> コンパイラのビルドとIDEのインテリセンス能力は関係ない(ハズ。LLVMは知らん
技術的には可能だって話

> もし定義元を書き換えてエラーを起こせばエラーメッセージから呼び出し元がワカル、
> という考えならテンプレートが絡んだ瞬間に目が眩んで死ぬ
そんなアホな発想するやつがいるとは思わなかったよ w
2018/10/06(土) 12:28:56.41ID:hM5EPMW3a
>>31
無知ですまない。
シンボルをコピー出来ると何が便利になるの?
2018/10/06(土) 14:07:27.04ID:9hP5TFYu0
>>10みたいなことをドヤ顔で言ってるド素人が多いけど
TMPにはTMPの一般的なルールがあるんだがな
ハンガリアンではないけど
2018/10/06(土) 14:36:17.51ID:hM5EPMW3a
templateの一般的なルールってtemplate引数で汎用的に使えるのはTとかそんな感じ?
2018/10/06(土) 14:44:51.23ID:skeZ9l4z0
標準にあるis_integral_vとかdecay_tとかのvやtもハンガリアンの亜種といえば亜種なのか?
2018/10/06(土) 14:51:10.85ID:9hP5TFYu0
それそれ
型と値は区別しやすいようにしてんだから考え方は似たようなもんだ

あと前スレ>>986
エアプログラマが調子に乗るな
ドカタだろうが何も生み出さない素人よりよっぽど偉いわ
2018/10/06(土) 14:53:54.19ID:Gg92+MKo0
>>34
ドヤってるところ申し訳ないけどテンプレートにルールはないって言ってるやつはいないと思うぞ
2018/10/06(土) 14:55:36.96ID:9hP5TFYu0
お前>>10を読んでそう思うのか
2018/10/06(土) 15:37:33.52ID:Gg92+MKo0
頭大丈夫?
>>10>>9のハンガリアンの話でしかない
いつから一般的なルールだと思ってた?
41デフォルトの名無しさん (スップ Sd02-YLcB)
垢版 |
2018/10/06(土) 15:45:25.65ID:8LWAn6RCd
ハンガリアンなんてなんの役にも立たないどころか邪魔にしかならないルールでコーディングしてたら周りから叩かれるだろ
ジジイしかいないところでやってるのかな
42デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/06(土) 16:10:25.13ID:FAIH8E2E0
この板には底辺ドカタしかいないのがよくわかるわ
C++スレで底辺ドカタのコーディング規約だけでもりあがってる
底辺ドカタがオレんとこではこうだといいはりあってる

コーディング規約を守ってもらうのも当然だが
ちゃんといわれたとおりに適切に動くもん作りなさい

そっちのほうが重要だからな
底辺ドカタはこの部分がおもいっきり欠如している
2018/10/06(土) 16:27:40.58ID:9hP5TFYu0
>>40
こっちのセリフだよw
>>10>>9へのツッコミや反論に見えるのか?w
一連のハンガリアンの話でハンガリアンをくさしたいだけだろ(多分C++ coding standardsか何かの受け売り

ついでに>>18でほとんどない例外事項とか言ってるが、
C++11からstd::stringがゼロ終端になったのは何でだろうね?w
2018/10/06(土) 16:29:29.27ID:9hP5TFYu0
エアプログラマと言われてカチンと来たのか知らんけど
お前に言ったんじゃねーから
どんだけナイーブなんだよ
45デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/06(土) 16:34:55.04ID:FAIH8E2E0
むしろプログラマーとか日本では最底辺のドカタだからな
なにいきがってんの
2018/10/06(土) 16:38:08.78ID:9hP5TFYu0
>>44>>40宛な
2018/10/06(土) 17:27:06.43ID:LgHbCU3jM
>>41
アプリハンガリアンならまだ役に立つよ
まあ適切な命名すりゃ事足りるんだけどね
ただ命名のスキルは将に知性に直結するんでね、玉石混淆なプロジェクトだと余計混乱したりする
2018/10/06(土) 17:28:08.46ID:LgHbCU3jM
>>45
土方だの何だのと罵っても、その土方が世の中を動かしてるんだよなあ
2018/10/06(土) 17:36:52.70ID:M3PJP+oD0
>>48
BOSSのCMっぽいね。
俺もそういう現場の人たちには敬意を表するわ。
2018/10/06(土) 17:40:24.23ID:d9G2ZJ030
△:土方が世の中を動かしてる
○:仕様どおりのブツをきちんと作る土方が世の中を動かしてる
2018/10/06(土) 17:59:22.81ID:LgHbCU3jM
>>50
今どき設計とコーディングが別だと思ってるエア()の人かな?
2018/10/06(土) 18:01:49.07ID:JjdhAE/r0
>>25
自分がやってるやり方だと、システム・ハンガリアンについては、
文字列(CStringでstrXxxx、0終端文字列で、szXxxxなど) と BOOL 型 (bXxxx)、
ポインタ(pXxxx)、についてだけ接頭辞を必ず使っている。

整数型、浮動小数点型については原則的には接頭辞を付けてない。
ただし、浮動小数点と整数を明確に区別したいときには、特に浮動小数点変数
についてだけは、「f」を付ける事があるが、float と double は区別してない。
int 整数についは、どうしても必要な場合は「i」を付ける場合があるが、普段は付けない。

今のところ、リストについては、接頭辞ではなく、接尾語のように、
XxxxList と付けているが、メンバ変数としては、

class CYyyyy {
  ・・・
  CMyList<Aaaa> m_listXxxx;
  ・・・
};
と書くことはある。

配列の添え字は、idxXxxx、個数は、numXxxx、id 番号は、idXxxx。
最大値については命名に迷うことが多い。maxXxxx とすることもあるが、
numXxxx とは、「1」しか値が違わないことも多いので迷う。


新しく作ったクラスのオブジェクトについては、基本的には接頭辞としては
付けないが、どこか、変数名の一部でクラスが分かるようにすることはある。

たとえばの話、CPerson クラスのオブジェクトなら、person1、person2
などとすることが多い。
2018/10/06(土) 18:02:16.20ID:JjdhAE/r0
>>52
[続き]

自分で作った Tree クラスの template なら、それを使った Tree クラスの
オブジェクトは、XxxxTree という名前にすると思う。
2018/10/06(土) 18:05:29.36ID:JjdhAE/r0
>>25
それから、今のところ、std::string は使わずに、CString ばかり使っているので、
std::string と CString の文字列を区別する命名法は普段は考えたことが無い。

多分、std::string を、sstrXxxx、CString を strXxxx にするか、逆に、
strXxxx と、cstrXxxx にするかだと思う。

それは、どちらか好んで使いたい方を短くするように命名法を決める。
2018/10/06(土) 18:10:29.82ID:Gg92+MKo0
>>43-44
何をグダグダ言ってるのか知らんけどテンプレートにルールがないとか言ってるやつがいないのに>>34なアホがドヤろうとして自爆しただけ w
2018/10/06(土) 18:13:01.41ID:JjdhAE/r0
>>25
>std::unordered_set<Company>みたいなテンプレ使ったクラス、

これは使ったこと無いけど、list の命名に習うなら、グローバル変数の場合は、

g_setXxx
g_usetXxxx

みたいな事になるかと思う。長すぎるのは困るので迷いどころ。
2018/10/06(土) 18:13:54.52ID:d9G2ZJ030
>>51
上の話の流れからすると単に「土方」と書かれると
「ちゃんといわれたとおりに適切に動くもん作」らない「底辺ドカタ」(>>42)と区別が付かないから
補足の必要が認められた

あと下位の設計が((特段の事態が生じない限り)上位の設計に従うのは
今日日であっても変わらないので、>>51が設計とコーディングが完全に合一だとする主張だとするといいすぎ
2018/10/06(土) 18:17:31.24ID:TQR3/dVH0
>>55
図星ですって素直に言えばいいのに
メタプログラミングやったことも無いのにテンプレート云々を理由にして
>>10と同じように「今どき変数の命名法なんか要らん」と、ハンガリアンだけでなく
あらゆる命名法を全否定してたアホだろ?w
受け売りばっかしてないで少しは自分のアタマ使えやボケが
あ、使うアタマも無いから受け売りしてんのか
2018/10/06(土) 18:39:05.87ID:iIkYOa/KM
>>58
だからお前以外は誰も一般的なルールの話なんてしてない
恥の上塗り乙 w
60デフォルトの名無しさん (スップ Sd02-YLcB)
垢版 |
2018/10/06(土) 18:47:51.32ID:8LWAn6RCd
今週は一般的な命名法って何のこと?
ハンガリアンの話をしてるのにな
61デフォルトの名無しさん (スップ Sd02-YLcB)
垢版 |
2018/10/06(土) 18:48:44.44ID:8LWAn6RCd
今週はは勝手についてしまった
62デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/06(土) 18:49:16.40ID:FAIH8E2E0
低学歴知恵遅れには
計算機のアトミックな型という概念がないからな
63デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/06(土) 18:51:00.59ID:FAIH8E2E0
ともかく低学歴が書いたコードは読みにくい
64デフォルトの名無しさん (ワッチョイ a6b3-XM+q)
垢版 |
2018/10/06(土) 18:51:48.57ID:3GKrUe5y0
C++は低脳でも使える言語だが、C++使ってるから低脳ってわけでもない。
2018/10/06(土) 18:52:08.17ID:TQR3/dVH0
>>59
同じ事しか言えんのか?
お前>>5を擁護してたろ?
あと型が知りたきゃF12押せって話もあった
(俺は別に型がわかるような命名を常にすべきとは思わんが)
彼らは型がわかるような命名法全否定してるだろうが

>誰も一般的なルールの話なんてしてない
一般的なルールって何?TMPの話ならTMPでデファクトスタンダードになってる命名法がある、って話なんだけど
お前話について来れてもないだろ?
2018/10/06(土) 18:55:18.77ID:M3PJP+oD0
>>50
まさに問題の本質を逆説的に示している。
仕様どおり、仕様書の解釈に誤解の余地がないほどにちゃんと仕様書が書ける人が少なすぎる。
行間を読めない現業の人がいる限り、行間を読めという免罪符は通用しない。
それを何だかんだ言っても実現してくれる(一部の)エンジニアはすごいと思う。
67デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/06(土) 18:56:13.41ID:FAIH8E2E0
やはり低学歴知恵遅れにはjavascriptが限界
もしくはさらに最底辺のウンコスプリプトが限界
2018/10/06(土) 19:02:35.18ID:TQR3/dVH0
>>ドコグロ MM36-GL8C=ワッチョイ aab3-GL8C
みたいなアホにはわからんだろうから補足すると、
メタプログラミングにおける”型”とは
・定数
・型
・テンプレート
これらのことだ
それらのうちどれであるかを示すような書き方は標準ライブラリでも普通にされてる(テンプレート・テンプレートパラメータの命名規則は見たことないが)
ハンガリアンの考え方と同じだろうが
(もう一度言うけど個人的には常に守るべきとまでは思わない、所詮可読性や一貫性・利便性のためのもの
2018/10/06(土) 19:06:54.45ID:Gg92+MKo0
>>65
> 一般的なルールって何?
自分の書いたことも理解してないのか…

> TMPにはTMPの一般的なルールがあるんだがな
そんな話してるのは オ マ エ だけ w
70デフォルトの名無しさん (スップ Sd02-YLcB)
垢版 |
2018/10/06(土) 19:10:00.82ID:8LWAn6RCd
いや、そのテンプレートの話とハンガリアンを結びつけるのは無理ありますわ…
2018/10/06(土) 19:10:06.22ID:TQR3/dVH0
>>69
一部だけ抜き出すから意味わかってないんだろうなと思ってな
あと、反論になってない
>>65を100回読み直せ低能
2018/10/06(土) 19:10:40.70ID:TQR3/dVH0
>>70
>>65
73デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/06(土) 19:12:29.62ID:FAIH8E2E0
なんにも分かってない低学歴知恵遅れの元ウンコスクリプターが
分かった気になってC++さわると
必然的にこうなる
74デフォルトの名無しさん (スップ Sd02-YLcB)
垢版 |
2018/10/06(土) 19:15:13.83ID:8LWAn6RCd
だめだこいつ話が通じてねえw
2018/10/06(土) 19:17:33.32ID:TQR3/dVH0
こっちのセリフだよ
>>41
>ハンガリアンなんてなんの役にも立たないどころか邪魔にしかならないルールでコーディングしてたら周りから叩かれるだろ
お前もどうせ受け売りだろ
2018/10/06(土) 19:26:32.20ID:Gg92+MKo0
>>65
> TMPの話ならTMPでデファクトスタンダードになってる命名法がある、って話なんだけど
そんな話をしてるのも オ マ エ だけ
他のみんながしてるのは ハ ン ガ リ ア ン な w
2018/10/06(土) 19:29:21.39ID:TQR3/dVH0
>>65の前半には反論できないの?
恥の上塗り乙 w
2018/10/06(土) 19:30:15.36ID:Gg92+MKo0
前半の話なんてしてないし w
2018/10/06(土) 22:43:12.86ID:OsNJaukk0
>>65
俺は >>5 で命名法を全否定したつもりはないけどな。
システムハンガリアンというか、 >>4 の「型と意味の二重の思考」を批判した。
部分的にはアプリケーションハンガリアン的なものは有りだと思ってるよ。

型は当然に意味を表すために付けられる (べきである) し、
名前は (なんらかの命名規則によって) 意味を表すようにする、
結果的に名前が型を表すこともあるけれども、
一貫して「意味」で考えればよいだけというつもりだった。

意味 → 型、名前

で、>>8 で「型は意味だ」ということが述べられていたので、

意味 → 型 → 名前

というつもりなら、中心に据えるレイヤが違うんだろうな (でもやってることはそんなにかわらん) ってことで、
な〜んか腑に落ちないけどまあいいやという気持ちが >>11 って感じ。
2018/10/06(土) 22:58:06.04ID:0ug9OSMx0
昔から仮想コンストラクタの使い道だけ思い浮かばないのですが、
何か有用な使い方ってありますか?
2018/10/06(土) 23:00:31.50ID:YHCdyeri0
>>79
>システムハンガリアンというか、 >>4 の「型と意味の二重の思考」を批判した。

物理学において、「次元解析」なる手法が知られており、単位の辻褄を合わす
組み合わせを見出すだけでかなりの事柄が導けることが知られている。

それが丁度、「型と意味の二重の思考」に近い。
82デフォルトの名無しさん (ワッチョイ a6b3-XM+q)
垢版 |
2018/10/06(土) 23:07:04.84ID:3GKrUe5y0
ハンガリアンで書いてみればいいだろ。
今まで名前考えるのにどれだけ悩んでたかわかるから。
サクサクかけるでえ。
2018/10/06(土) 23:07:31.25ID:UA9NipTw0
>>79
微妙な整数型の違いではまった経験があると
お前さんの理想論より泥臭くとも現実的な対処の仕方を優先したくなるんだよ
84デフォルトの名無しさん (ワッチョイ a6b3-XM+q)
垢版 |
2018/10/06(土) 23:12:29.30ID:3GKrUe5y0
サクッちょサクサクやで。
2018/10/07(日) 00:02:27.52ID:2FImrXZj0
>>79
>命名法を全否定したつもりはないけどな。
それはすまんかった
要するに記法に型を入れる必要は無いってこと?

まぁ型はちゃんと自分の目で確認しろよ、という考え方を否定するつもりはないけど
他人の書いた長いコード読んでると途中で忘れることもあるしなぁ
(特に数文字とかの短すぎるローカル変数名で長い関数書かれると地獄)
わかりやすけりゃ何でもいいんだけどさ

自分はテンプレートを理由にハンガリアンを否定するのは違うだろって言いたかっただけ
86デフォルトの名無しさん (スップ Sd02-YLcB)
垢版 |
2018/10/07(日) 00:05:36.66ID:rbebcA6zd
>>85
まだ理解できてなくてワロタw
2018/10/07(日) 00:10:22.96ID:2FImrXZj0
>>86
受け売りエアプ野郎は帰ってね
2018/10/07(日) 00:33:33.16ID:77445U4A0
>>85
私の思想では変数名が型を表すこともよくあるということを説明したつもりが、
まるで逆に受け取っているのでどう説明すればいいかわかんないや。
これ以上の説明はもうしない。
2018/10/07(日) 00:36:57.44ID:2FImrXZj0
>>88
システムハンガリアンには型だけでなく意味(というか用途)まで混じってることを批判してるんじゃないの?
90デフォルトの名無しさん (ワッチョイ a6b3-XM+q)
垢版 |
2018/10/07(日) 01:06:34.13ID:iX7g/tHs0
いまどきハンガリアンごときで論争かよ。
間抜けだな。
日本人としての矜持はどこ行った。
今やるべきことはモンゴリアンの発表だろ。
作る人の板だぞここは。
91デフォルトの名無しさん (ワッチョイ d980-A6IM)
垢版 |
2018/10/07(日) 01:11:39.10ID:mIq+f5AO0
この板は底辺ドカタしかいないからな
しょうがない
2018/10/07(日) 01:52:24.01ID:r4TItDH9M
>>80
抽象クラスで配列作れるでしょ
2018/10/07(日) 01:59:47.96ID:mnW0GgxkM
>>91
そろそろ働けよ…
能書きだけじゃ食ってけないって身に沁みたろ?
2018/10/07(日) 03:09:32.05ID:A62LOxJG0
>>80
古来よりコピー作る(機能を提供する)のに使われている
2018/10/07(日) 06:58:40.31ID:874mFeqU0
>>80
フィルタ(固有の動作状態を持つ(←重要)ブツ)のの配置や接続をユーザーがGUIで変更可能なフィルタアプリを作るとき使う
これは(部品)create()とclone()の両方が覿面に要る
イメージ的にはDirectShowのgraphEditみたいなアプリを考えたら良い

ユーザーがすでに書いた組み合わせフィルタ(A→B)を最終段にもう一発入れたいというときに、
今日日一般的で親切な操作インターフェースはワークシートにすでに描かれている(A→B)をclone()することである
フィルタが過去の入力履歴に依存するケースがあり、そういった記憶はフィルタのインスタンス固有なので、ポインタのコピーでは済まず、clone()である必要がある
(Visioみたいに単に部品の接続だけが問題なブツなら、部品自体はポインタのコピーで済ませて部品間の接続情報を別途管理するという構成も可能だが、部品の動作状態が絡むとclone()止む無し
2018/10/07(日) 11:07:53.26ID:rhwre/Em0
>>92,94,95
うーん、よくわからない。
純粋に
class A {
virtual: A() {}
}
のvirtual事なのですがその事を仰ってますよね?
"x* create()"と"x* clone()"が要る場合があるのは理解できるけど、
"x* create()"を実装するのにコンストラクタを仮想にする必要が無いような。
もう少しわかりやすくしてもらえると助かりますが、面倒でしたらスルー
していただいても結構です。ありがとう。
2018/10/07(日) 11:38:47.25ID:FoRhSX54a
コンストラクタってvirtualできたっけ?
2018/10/07(日) 11:40:37.47ID:kve7u25tM
>>96
すまん。virtual constructer ってファクトリーメソッドの
別名というか旧い名前なんで其方の質問かと思ってたわ
2018/10/07(日) 11:41:19.51ID:kve7u25tM
>>97
私の知る限り出来ないな
2018/10/07(日) 13:37:26.97ID:Ty3ihyC20
>>97, >>99
そもそもできてもどうやって使うんだ?
2018/10/07(日) 14:16:30.30ID:kve7u25tM
>>100
さぁ?80に教示した人でないとわからないかも
「昔から」とあるから、独自処理系なのかも :-p
2018/10/07(日) 14:41:28.41ID:874mFeqU0
コンストラクタはC++の構文上はvirtualにでっきない
抽象クラスx (Product)のx*を返すcreate()メソッドを何かのクラス(Creator)に設けたら機能としてはできる
Creatorが内部で実際の生成をサブクラスに委譲する場合は正にファクトリーメソッドパターン(のProductが抽象クラスのケース)になる

さらにその「何かのクラス」(Creator)まで抽象クラスにしたブツがアブストラクトファクトリーパターンというやつで、もはや
ProductとCreatorが同じ抽象クラスであってもかまわない。
ここまでやって初めてclone()が抽象化できるすわなち「インスタンスの」クローニングを抽象化のうちにやれる

抽象コンストラクタとはフツーアブストラクトファクトリーパターンかつProductとCreatorが共通の抽象クラスのケースを指す(のだと思う

※ 個人の感想です
2018/10/07(日) 14:46:34.66ID:9AlsaWAK0
コンストラクタの中でそのクラスのvirtual関数を呼んでも
基底クラスのが呼ばれるよな。
基本的にコンストラクタの中ではあんまりいろいろしないほうがいい。
2018/10/07(日) 14:50:52.53ID:874mFeqU0
>基底クラスのが呼ばれるよな。
うそぴょん
自身のが(非仮想関数同然に)呼ばれる
理由はこんなかんじ↓
ttp://isoparametric.hatenablog.com/entry/20080707/1215396846
2018/10/07(日) 15:14:33.44ID:ldfyXuEU0
元の質問主はデストラクタと間違えたのかな?
コンストラクタにvirtual付けたらコンパイルエラーだからすぐわかるだろうし
2018/10/07(日) 15:45:00.91ID:L7dKBNcwp
>>96に書いてるからそれはないだろ
最近コード書いてもみないで頭の中だけで机上の空論こね回すのが流行ってんだろ
初心者の間で
107デフォルトの名無しさん (ワッチョイ a6b3-XM+q)
垢版 |
2018/10/07(日) 15:47:27.26ID:iX7g/tHs0
手を動かさずに脳内ですべてを完結させられたら、それはもう初心者じゃないだろ。
スーパープログラマの誕生だ。
2018/10/07(日) 16:09:28.90ID:9AlsaWAK0
>104
え?派生クラスのほうが呼ばれる??
2018/10/07(日) 16:17:18.47ID:ldfyXuEU0
「基底クラスのが呼ばれる」だと最基底のクラスの奴が呼ばれるみたいに見えるから突っ込まれたんでしょ
何を継承してようと何が派生してようと、あくまで自分自身のが呼ばれる
2018/10/07(日) 16:21:48.20ID:9AlsaWAK0
>>109
なるほど
たしかに基底でなくて自分自身が正しいな
2018/10/07(日) 16:59:03.29ID:8iCyHK6sd
HLSLのfloat4みたいに、xyzwでもrgbaでも扱える、
所謂エイリアスを実現するスマートな方法は参照でしょうか?

class float4
{

float x;
float& r=x;
};
2018/10/07(日) 17:46:55.03ID:ldfyXuEU0
getXYZW()とgetRGBA()を作る
2018/10/07(日) 18:09:26.41ID:AFK+s8Ok0
>>17
CStringを使うのに「あのエディタ」以外を使うアホを救う必要あるか?
2018/10/07(日) 18:20:34.91ID:AFK+s8Ok0
typedef char* A;
typedef A B;
typedef B C;
typedef C D;
typedef E F;
typedef F G;

G lpszOmanko;
型が知りたいときに宣言を見ないアホを救おうと一生懸命なアホの書くコード
2018/10/07(日) 18:24:01.97ID:2FImrXZj0
>>111
無名共用体じゃあかんの?
2018/10/07(日) 23:30:13.67ID:EwS6ucBG0
>>112
>>115
ありがとうございます。

(A)VC++のプロパティ機能を使って、ゲッター、セッターを変数のように書く
(B)無名共用体

これらを試してみます。
2018/10/08(月) 01:39:38.90ID:LP2GoVYR0
無名共用体でもっともスマートに実装できました。

class float4
{

union{ float x; float r; };
union{ float y; float g; };
・・・
};

ありがとうございました。
118デフォルトの名無しさん (ワッチョイ a6b3-XM+q)
垢版 |
2018/10/08(月) 03:22:10.62ID:mztv/TPA0
どういたしまして。
2018/10/08(月) 05:30:07.70ID:64IsVtKl0
float f4; float3 f3 = f4.ayx; が難しいみたいな話かと思った
2018/10/08(月) 09:51:00.66ID:LP2GoVYR0
>>119
swizzleは(A)で対応できました。
2018/10/09(火) 12:09:32.42ID:R91wWJMl0
class parent {
public:
void disp() {
cout << "parent\n";
}
void disp(char* str) {
cout << str << "\n";
}
};

class child : public parent {
public:
void disp() {
cout << "child\n";
}
};

disp(char* str)を呼び出すにはどうすればいいですか?
2018/10/09(火) 12:49:30.07ID:+8izRWpu0
Boland C++ Builder 5を使用していたのですが仮想コンストラクタ
でコンパイルできませんでした。失礼しました。
VCLライブラリのTGraphicなどのヘッダーが仮想コンストラクタで記述
されていたのでてっきり仕様で認められている物だと・・。
このライブラリ(というかBuilder)だけ特殊ということで理解しました。
皆さんありがとうございました。
2018/10/09(火) 13:18:44.86ID:URt3e1HT0
try __finally も使えて糞便利なんだよなアレ
2018/10/09(火) 13:27:53.34ID:p4x9lnrf0
>>121
引数にconstつければ、"文字列リテラル"も渡せる。
2018/10/09(火) 13:33:57.94ID:3NZxPpTya
引数なしのdispをオーバーライドしたから引数ありの方が隠蔽されたとかかな。明示的にusingしてみては?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況