C++相談室 part149

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/02/18(火) 06:19:41.54ID:xvjipUWj
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part148
https://mevius.5ch.net/test/read.cgi/tech/1580471646/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
2020/03/05(木) 21:07:33.42ID:eBZoUINk
>>654
あーそうなの?
テンプレートとかムブコンとかうっすらぱーw
2020/03/05(木) 21:29:47.60ID:maJEmc7K
>>650
>ここがそうだと思います
本気でそう思えるなら自分のことしか見えてないんだろうな
あといちいち分けてレスするな
2020/03/05(木) 21:57:41.56ID:maJEmc7K
昔BeOSっていう純粋にC++で書かれたOSがあったけど、コンパイラやAPIのバージョンアップで
マングリング規則やクラスのエクスポート時の互換性が無くなって、
過去のアプリが全く動かなくなったりした(こういうのはBeOS限定の話ではないけど

クラスライブラリの互換性をどうにかするために、MSの場合はvtblが先頭にあることを利用したり
余分な引数を追加したりしてコンパイラ間の互換や後のバージョンアップに対応できるようにしたけど
そもそもvtblを先頭に置くのは規格で決まってるわけではない

上の方でUBUB言ってた人達はこういうのどう思うんだろうね
2020/03/05(木) 22:17:26.19ID:DHJqOPbR
>>610

コンパイル時にエラーが出ていました。
下記でコンパイル通りました。
ありがとうございます。

std::regex re( R"(^\s*(^\S+)\s+(\S+))")

ダブルクォーテーションの内側を全部丸括弧でくくればよくて、そのカッコは
下記の results[1] にはセットされないんですね。
知らないとちょっと戸惑いそうだ。

std::regex_search(word, results, re)
2020/03/05(木) 22:19:16.64ID:2gUuzrSw
>>660
OS の製作元と同じマイクロソフトが提供している VS で COM を作る分には別にいいんじゃないの。
移植性を考える必要もないし。

しかし、こういう変な形でなければ C++ で作ったバイナリは運用しづらいということの証明にもなってはいるよな。
2020/03/05(木) 22:24:01.52ID:LYrzkUWd
>>660
c++でUBでも処理系が定義してる範囲で、
かつその処理系に依存していいなら問題ないだろ
そのへん区別しろ
2020/03/05(木) 22:33:54.16ID:maJEmc7K
>>662
いやVS限定ではないはず、他のコンパイラからでも使えるでしょ

>>663
問題かどうかではなくて、そういうトリックを使わなければ達成できない目的があったときどうするの?みたいな話
と、バイナリ関係の規格が全然足りてないよね、という話
2020/03/05(木) 22:49:02.33ID:LYrzkUWd
>>664
わからんやっちゃな
処理系が決めてる範囲でやるんだよ
実際それでなんとかしてるだろ?
テンプレートでいきってる標準化の連中がバイナリ境界に無関心なのはカスだと思うけどな
2020/03/05(木) 22:55:28.04ID:2gUuzrSw
>>664
まあ実際には VS に合わせてるコンパイラが多いのは知ってる。
gcc とかもデフォルトではビットフィールドの割り当て順序が違ってるんだが、
VS に合わせるオプションとかが用意されてたりもするくらいには Windows では VS が基準。

ただやっぱりそこには「検証の手間」が発生するよ。
VS でやる分にはマイクロソフト自身がやってんだから疑いが入る余地はない、
確実に問題はないという意味で VS に限定して問題ないと表現した。

ひょっとしたら VS 以外のコンパイラでもドキュメントをよく見たらどっかに書いてあるのかもしれんけど、
少なくとも私はそれを確認したことはない。

---

バイナリの規格ってのは「せめて Windows 内では」とかいうレベルのこと?
違うアーキテクチャで統一できないのは仕方ないけど、
主要なアーキテクチャ/OS内ではっきりした規格を定めれていないのはなんでできないんかなぁと思わなくはないな。

うーん、でも Linux なんかだと GCC のマングルが実質的な規格そのものみたいな感じもするし、
Windows だと結局は VS に合わせるしかないんだからそれが規格みたいなもんじゃね?
その規格 (的なもの) に合わせられていないのは単純にやる機運が起こってないだけで。
2020/03/05(木) 23:15:47.07ID:maJEmc7K
>>666
マングリングは政治的な問題も絡むのか・・

すまんバイナリって言ったから誤解させたかもしれん、インターフェースの話ね
クラスのエクスポートとか回り道せずに出来るようにならないと、上でも言われてる通りいつまでもCのスタイルに合わせざるを得ない

てかvtblを先頭に置かないコンパイラを知らんのだけど、あったとして合理的な理由とかあるんだろうか
2020/03/05(木) 23:18:24.65ID:lncFD5GH
どんな状況でも動くことを考えたらCの仕様に行き着く
2020/03/06(金) 00:04:56.44ID:pppdCZrx
iostreamの使いづらさはboost::formatで大体解決する
ってかformat指定をワザワザprintfから改悪してstreamオブジェクトに余計な状態保持をさせてしまったところ

std::vector<bool>が典型的だけど、初期の頃に考えられた言語デモンストレーションの為に、実用性に疑問の残るおかしな仕様が標準化されちゃっているところがあるよね
2020/03/06(金) 00:09:16.95ID:trP/ijr0
>>630
printf が関数として、特別な機能を持たせている文字は % の1つだけ。
しかし、言語自体が \ をエスケープ記号として使っているので、合計2つが
特別な意味を持っており、これでも問題になる場合がある。

一方、cppfmt の場合、少なくとも %, {, } の3つが特殊記号になっていて、
\と合わせれば、合計4つもが特別な意味を持っており、いくらなんでも多すぎる。

それがセンスの悪さ、と呼ばれるものである。
2020/03/06(金) 00:13:54.49ID:ba67/VF+
>>670
でお前printfで64bitの整数出すのどうしてる?
正直に言ってみな
2020/03/06(金) 00:16:09.16ID:trP/ijr0
>>671
64bit モードは使う必要ない。
2020/03/06(金) 00:28:50.27ID:ba67/VF+
>>672
そうなんだ
でお前はそのお前固有の環境を前提に俺たちに何を語りかけたいのさ?
寂しいからとかやめてよ
2020/03/06(金) 00:34:13.09ID:pppdCZrx
>>670
pythonっぽいfmt::formatが{}
cっぽいfmt::formatfが%じゃないの?

前者がわざわざ2文字なのは見やすさ重視だからこそだし
2020/03/06(金) 00:53:15.12ID:trP/ijr0
メリットは何もないのに64bit使う必要なし。
2020/03/06(金) 00:56:22.87ID:8Rm5TWXP
そうか
じゃあお前だけtime_tに32bit使って2038年問題で苦しめ
2020/03/06(金) 01:00:41.40ID:pppdCZrx
printfは型と対応するformat指定法を把握していないと簡単にバグるからね
まあ、最近のまともなコンパイラだとprintfのformat解析まで静的にやって殆んどの場面でエラーなり警告なり出すから大分マシだけど
2020/03/06(金) 01:04:32.93ID:Lqsy4Vrx
(ITドカタの爺さんには)64bitはなんのメリットもない
pythonなんて当然触ったこともない
2020/03/06(金) 01:55:37.24ID:trP/ijr0
>>675
time_tの問題をコンパイラの64bit化しなくては解決できないほどプログラミング能力がないんだね。
アホみたい。
2020/03/06(金) 02:12:28.32ID:hhWvctpB
>>679
自分で自分に批判レスするってアホみたい
2020/03/06(金) 02:13:52.12ID:trP/ijr0
>>680
頭がおかしいね、あなた。
2020/03/06(金) 02:18:58.34ID:8Rm5TWXP
知らなくて驚くかもしれないけど、32bitのシステムでも64bit整数は使えるんだよ
2020/03/06(金) 02:27:44.01ID:P6VjmRBF
64ビットは不要とか言っちゃう奴がC++の仕様に文句言うとかないわw
2020/03/06(金) 02:31:48.79ID:trP/ijr0
ハード屋が単に食い扶持確保のために用意しただけのものを勝手に意味があると思い込んでいる馬鹿な人達。
2020/03/06(金) 02:59:03.29ID:8Rm5TWXP
>>684
純粋な疑問なんだけど、あなたは4294967295を超える整数を扱う必要がある時にはどうするの?
686デフォルトの名無しさん
垢版 |
2020/03/06(金) 04:22:51.72ID:89RQTO1C
構造体を使います。
687デフォルトの名無しさん
垢版 |
2020/03/06(金) 04:28:44.87ID:89RQTO1C
構造体を知らない人が64ビット言ってるんだと思います。
2020/03/06(金) 04:29:16.89ID:8Rm5TWXP
なるほどね
センス悪いねあんた
689デフォルトの名無しさん
垢版 |
2020/03/06(金) 04:32:38.83ID:89RQTO1C
何のセンスだ。
2020/03/06(金) 04:35:36.86ID:8Rm5TWXP
仕事のセンスだよ
じゃあ構造体使って1兆÷7を計算するコード書いてみてよ
64bit整数を使えば「100000000000ULL/7」だけで済むものを
どれだけ面倒で下らないコードで水増しして生産性下げてチームに迷惑かけてるのか興味あるからさ
2020/03/06(金) 04:43:17.56ID:3vh2YYy0
64bit機のNintendo64は32bit機のプレステ1に負けたよね。商業的に。
692デフォルトの名無しさん
垢版 |
2020/03/06(金) 04:53:21.52ID:89RQTO1C
>>690
構造体知らんの?
2020/03/06(金) 04:56:22.47ID:8Rm5TWXP
知らないから君の最強の多倍長整数64bit計算を見せてよ
694デフォルトの名無しさん
垢版 |
2020/03/06(金) 05:00:24.98ID:89RQTO1C
構造体学んでからもう一度質問してください。
2020/03/06(金) 05:04:01.70ID:8Rm5TWXP
というか構造体じゃなくて配列でいいよね
uint32_t trillion[2] = {232, 3567587328};
を7で割るコードを見せてください

64bit整数の割り算をわざわざ多倍長整数でやるなんてそんな無意味なコード書いたこともないから知らないんだよね
見本見せてよ
「100000000000ULL/7」よりもずっと優れてるんでしょ?
696デフォルトの名無しさん
垢版 |
2020/03/06(金) 05:06:27.71ID:89RQTO1C
構造体を学んでください。
いま素晴らしいアドバイスを与えましたよ?
2020/03/06(金) 05:12:53.95ID:8Rm5TWXP
じゃあ構造体でいいよ
struct Int64 {uint32_t high, low;};
Int64 trillion = {232, 3567587328};

さっさと7で割れや
逃げるのか?
698デフォルトの名無しさん
垢版 |
2020/03/06(金) 05:14:40.27ID:89RQTO1C
いや全然ダメ。
構造体の何たるかが全然わかっていない。
まともな師匠に師事して学ぶべきです。
2020/03/06(金) 05:29:10.46ID:8Rm5TWXP
しょうがねえな
多倍長の除算を書くのが面倒なんだったら、>>695>>697にはわざと32bit環境での多倍長演算には適さない
問題のある表現使ってやったからそのことを指摘するだけでもいいよ
それすら出来ないならお前こそまともな師匠に師事して出直してこい
700デフォルトの名無しさん
垢版 |
2020/03/06(金) 06:26:13.08ID:89RQTO1C
むしろ16ビットで十分だけどな。
2020/03/06(金) 06:41:40.07ID:8Rm5TWXP
え、マジ?>>695>>697の何がダメか本当にわかんないの?
相手して損した
702デフォルトの名無しさん
垢版 |
2020/03/06(金) 07:17:23.58ID:89RQTO1C
構造体を知らないものが64ビットを愛好するということが分かった。
2020/03/06(金) 07:25:27.16ID:hYOq9QPM
>>661
R"..." はいわゆる生文字リテラルでWindowsのファイルパスとか正規表現文字列を書き易くするための機能やね
ただ無駄に高機能で
R"***(文字列中)")***" ⇒ 文字列中)"
なんてのも指定できるけど個人的にはやりすぎとしか思えない
https://cpprefjp.github.io/lang/cpp11/raw_string_literals.html
2020/03/06(金) 08:24:11.44ID:7d5kGJiP
そもそも暗号系扱うならそんな長さじゃ全然足らんしね。
構造体構造体言ってる奴もそれわかってなさそうだが。
705デフォルトの名無しさん
垢版 |
2020/03/06(金) 08:42:39.21ID:89RQTO1C
暗号系はHaskell一択でしょ。
706デフォルトの名無しさん
垢版 |
2020/03/06(金) 10:08:00.27ID:mgb6nXCA
プログラムが実際にかかった時間とCPU時間の2つを最後に表示させるのに何か関数用意されてますか?
clock()はCPU時間だけですよね?
2020/03/06(金) 10:13:22.05ID:u9hNYNKX
>>703
それ必須(syntaxはさておき)
それなしのrawは片手落ちだよ
2020/03/06(金) 10:23:16.85ID:u9hNYNKX
>>706
clock()つかってんならtime()使えばいいじゃん
ちなみに君c++使えてる?
2020/03/06(金) 10:25:39.21ID:u9hNYNKX
>>699
この爺さんたぶん足し算引き算繰り返すんだよ
それならcarry bitだけ気にすればいいからね
32bitの乗算の結果は最大64bitだから爺さんの能力オーバーする
2020/03/06(金) 10:33:59.25ID:hYOq9QPM
>>707
それおまえさんの個人的意見だよね?
俺はPythonとかC#あたりでいいと思ってるだけの話
必須でもなんでもないよ
2020/03/06(金) 10:43:29.63ID:u9hNYNKX
>>710
意見でもあるし、定性的にそうだよ
閉じカッコを含められない制限に何か合理性ある?
ptyonだってトリプルクォートとかrawとか建て増しになってとっちらかってるわけで
2020/03/06(金) 10:46:24.85ID:u9hNYNKX
いや問題はダブルクォーテンションか
そこは訂正
2020/03/06(金) 12:26:06.89ID:hYOq9QPM
>>711-712
> 閉じカッコを含められない制限に何か合理性ある?
生文字列中にダブルクォーテーションを含めたい機会がどんだけあるんだ?
って話な
Pythonなら R"ABC" "¥"" "def" ってやるだけ(R'ABC"DEF' でもいいけど両方含む場合はとか言い出すだろうからw)
C# なら @"ABC""DEF" でできる

> ptyonだってトリプルクォートとかrawとか建て増しになってとっちらかってるわけで
トリプルクォートとRaw文字列は役割違うし別にとっちらかってないけど?
2020/03/06(金) 12:31:07.14ID:1NgZSMCO
ダブルクォート含みのCSVとかをパースするための正規表現書く時とかいくらでもあるけど
raw文字列ってそういう時のための物じゃないの?
2020/03/06(金) 13:57:40.15ID:u9hNYNKX
>>713
> トリプルクォートとRaw文字列は役割違うし別にとっちらかってないけど?

それこそお前の感想だよね?w
役割が違う言えば聞こえがいいが、pythonの文字列リテラルは機能の直行性もない短絡的な設計
rawは短い正規表現などの用途しか考えてなくて複数行でかつエスケープなしができない
でそういうのが欲しいケースはいくらでもある
JSONを文字列で埋め込んでおきたい場合とかね

c++のrawは建て増しなのは同じだけど設計の筋は通ってる
ただもう一歩がんばってindent合わせが可能な仕様にしてほしかったな
2020/03/06(金) 13:59:12.86ID:ytQa5naT
>Pythonなら R"ABC" "¥"" "def" ってやるだけ
rawの意味ねぇなww
2020/03/06(金) 14:24:22.40ID:trP/ijr0
>>690
だから、64BITの時間をそのまま7で割らなくてはならないような状況に
なってしまうあなたの数学力が足りない。
2020/03/06(金) 14:28:35.64ID:trP/ijr0
>>717
それから、本当に桁数の多い数の割り算計算が本質的に必要な場合は多倍長計算ライブラリを使えばいい。
多くのアプリではそういう状況が少ないと言うことだ。
科学技術計算では、doubleか、4倍精度float数を扱えればいいので、64BIT整数が必要な場面は今のところ少ない。
メッシュの個数やループ回数が32BITを超えるようなものは、今のCPUでは重過ぎて普通、計算できない。
2020/03/06(金) 14:38:19.40ID:2gPy1GFt
>>717
64bitの時間? おまえさんもしかして、2922億年のことを言っているのか?
64bitの1秒であろうと32bitの1秒であろうと1秒は1秒でしかないんだが
2020/03/06(金) 14:41:03.85ID:hYOq9QPM
>>715
> rawは短い正規表現などの用途しか考えてなくて複数行でかつエスケープなしができない
まさかと思うがトリプルクォートとRaw文字列を組合せて使えることも知らんのか?
そんな知識で直行性とか語るなよw
2020/03/06(金) 14:45:21.47ID:hYOq9QPM
>>716
まああんまり無いケースだから多少見辛いのはしゃーない
C#みたいな方がまだマシだとは思うが
2020/03/06(金) 14:45:22.11ID:gkPkCuAw
業界全体の傾向では「printfへの回帰」が見られる
fmtはprintfの21世紀型強化版として捉える

つまり、+や<<で連結するのはどの言語でも煩わしかった
だからprintf(のようなもの)に戻ってきている

CUIやテキストへの出力はprintf程度で充分だった、と誰もが気付いた
2020/03/06(金) 14:45:35.04ID:2gPy1GFt
複数行できるぞ

std::cout << R"(abc)"
R"(def)"
"\nghi" << std::endl;

しかもエスケープあり/なしを途中で切り替えることまでできる
724デフォルトの名無しさん
垢版 |
2020/03/06(金) 14:53:31.38ID:89RQTO1C
普通は16ビットあれば十分ですよ。
64ビット厨はプログラムしたことあるの?
2020/03/06(金) 15:11:10.95ID:/2BnMzJ+
ポインタ使えないだろ
2020/03/06(金) 15:34:10.40ID:1NgZSMCO
>>718
へー
お前の世界の普通の会計ソフトは43億円を扱えないし
お前の世界の普通の防犯カメラは43億ミリ秒(たった5日)連続稼働したら落ちるし
お前の世界の普通のOSは4GBのファイルを作れないのか

アホくさ
2020/03/06(金) 15:56:44.11ID:trP/ijr0
>>726
16BIT時代から一兆円は扱えた。
Z80 はマシン語としては整数の掛け算/割り算も浮動小数点も全くサポートしてなかったが、BASIC言語ではどれも普通に出来た。
同様に、32BIT CPUでも、64BIT整数が扱えないわけではない。
728デフォルトの名無しさん
垢版 |
2020/03/06(金) 16:00:14.00ID:89RQTO1C
intは16ビットが正解。
2020/03/06(金) 16:03:04.34ID:u9hNYNKX
>>720
まじか・・・正直その組み合わせ気づいてなかったわ
ただやはりpythonはエスケープフリーで任意の文字を含められない点で機能が不完全
2020/03/06(金) 16:40:55.40ID:7d5kGJiP
pythonは文字列まわりがとっちらかって結局2と3で分裂したが。
2020/03/06(金) 17:14:18.31ID:1NgZSMCO
python2で混乱してたのはraw周りじゃないぞ
文字列の文法は3でもほとんど変わってないはず
strとunicodeとbyte(に相当するもの)の扱いがナイーブ過ぎてグッチャグチャだったのがpython2の大問題
2020/03/06(金) 18:10:29.44ID:k+5uYmSv
>>729
pythonでも"と'を同時に使わない限り何でもかけるじゃん。
一方、c++は)"という並びを文字列中にかけない制限があるわけなんで、
もちろん後者のほうか確率は低いけど、pythonを一方的に機能不全と言えるほどじゃないなー
2020/03/06(金) 18:15:02.80ID:2gPy1GFt
>>732
書けるぞ
R"a(  )"  )a"
2020/03/06(金) 18:26:07.10ID:k+5uYmSv
>>733
回線切って吊ってくる
2020/03/06(金) 18:43:12.26ID:XdrWOsjB
>>718
>多倍長計算ライブラリ
GMP が有名どころではありますが、GPL なのが嫌ですね
そういう人のために、かなり遅いのですけれども https://mevius.5ch.net/test/read.cgi/tech/1434079972/51 を公開していますので、よろしければ使ってください
2020/03/06(金) 20:27:49.81ID:hYOq9QPM
>>732
いや書くためにユーザーに指定させるようにしてるんだけど正直そこまでやる価値はあるんか?
って話
理念はわからなくもないけどやりすぎ感半端ない
2020/03/06(金) 21:30:02.51ID:ytQa5naT
やりたくない奴はやらなきゃいいだけ
この機能はあった方がいい
ないとrawから離れてしまうのは君自身が>713で例示している
2020/03/06(金) 22:02:29.04ID:Oq5LDxMU
>>737
嫌なら使わなきゃ良いってか?
PythonなりC#.並の記述ができるならいいけどそうじゃないからねぇ
2020/03/07(土) 00:05:13.96ID:aYdkWxa2
>>51
We regret to inform you that we are shutting down code.hackerearth.com.

Apologies for any inconvenience caused.

Thank you for understanding.
2020/03/07(土) 01:02:00.91ID:aYdkWxa2
>>735
>>739
というエラーが出てページが表示できない。
2020/03/07(土) 01:12:05.61ID:S+zsWTTW
>>740
それは https://code.hackerearth.com の今のメッセージですね、サーバーシャットダウン中でごめんなさい、ですか
ではこちらをみてください https://code.hackerearth.com/11eea6E>>740
2020/03/07(土) 01:33:50.20ID:aYdkWxa2
>>741
症状変わらず。
あなた、試してないよね?
2020/03/07(土) 01:40:43.07ID:S+zsWTTW
>>742
申し訳ございません、コードを ideone に張ったものと記憶違いをしていました
>>735 より前のバージョンを https://mevius.5ch.net/test/read.cgi/tech/1434079972/37 に置いています
2020/03/07(土) 07:24:46.08ID:HWBpZxET
>>729
> ただやはりpythonはエスケープフリーで任意の文字を含められない点で機能が不完全
だから前にも書いたけどそんな機会がどんだけあるんだよって話な
ぱっと思いつくのは " や ' を含む正規表現を書きたい時ぐらいだけど毎回そんなものを書かないだろ
めったに無い時のために毎回無駄な ( ) を書かされるのはちょっと嫌
※ 最後の行は個人の見解です
2020/03/07(土) 08:46:17.40ID:CT6knIM5
すみません、教えてください
JAVAだとinterfaceを定義してsetListner的なことが出来て、リスナー不要なときはnullを指定できます。

C++だとどうかけばいいでしょうか?
interface用のクラスを一つ用意してvirtualメソッドを並べれば出来そうな気がしますが、リスナー不要な時に上位からnullを指定できない気がしていて
746デフォルトの名無しさん
垢版 |
2020/03/07(土) 09:53:24.66ID:iUAwzQ87
std::functionが一番簡単だと思いますが。
2020/03/07(土) 10:21:48.59ID:CT6knIM5
ありがとうございます。

具体的なコードを教えて頂けないでしょうか?
例えば、適当に拾った以下のJavaコードを例にして同じ事を出来るとC++のサンプルを教えて頂けると参考になります。

続く
2020/03/07(土) 10:21:58.29ID:CT6knIM5
class HeavyTask {
    private TestListener listener;
    // interface 設定
    interface TestListener {
        void onSuccess(int result);
    }
    // listener
    void setListener(TestListener listener) {
        this.listener = listener;
    }

    void taskStart() {
        int sum = 1;
        int i= 0;

        for ( ; i<  20; ){
            sum += sum;
            i++;
        }

        if(listener != null) {
            // 計算が終わったら結果をlistenerに渡す
            listener.onSuccess(sum);
        }
    }
}
749デフォルトの名無しさん
垢版 |
2020/03/07(土) 11:01:38.19ID:iUAwzQ87
え?めんどくさいですが?
2020/03/07(土) 11:04:48.12ID:CT6knIM5
すみません、簡単な例でいいので、リスナー登録してそこから複数のメソッドがイベント毎に呼ばれるようにする方法がしりたいです。。
751デフォルトの名無しさん
垢版 |
2020/03/07(土) 11:09:04.29ID:iUAwzQ87
std::functionは関数っぽいものなら何でも突っ込めるので、好きなようにお使いくださいとしか。

本当は出来ないんだろ?とか煽ればだれか書いてくれるかも。
2020/03/07(土) 11:13:54.29ID:CT6knIM5
まだイメージが沸かないですよね。。使い方も
2020/03/07(土) 11:20:59.13ID:NiWYPfBM
最初に自分がいってるとおりじゃないんか
インターフェイスの派生クラスのポインタ渡せばいいだけで
不要なら0入れて呼ぶときにチェックするだけじゃないの
2020/03/07(土) 11:27:48.77ID:AiHnVJpq
てか、C++でもほとんど>>748と同じようなコードになるだろ
2020/03/07(土) 12:03:07.45ID:CT6knIM5
具体的にfuntionを使って、リスナーをnewして呼び出すあたりとかコードがみたいです。。virtualだと誰かが継承してクラス化しないとだめですよね?

Javaのように、setListenerの引数にリスナーだけnewしてしていとか、null指定とかする方法がやっぱりよくわからないです。
2020/03/07(土) 12:05:29.33ID:qpmtEUNF
そのjava版晒せば変換してやるが
2020/03/07(土) 12:06:49.73ID:CT6knIM5
ちょっとまってください
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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