C++相談室 part152

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/07/12(日) 13:42:20.13ID:TX1mpKr6
https://mevius.5ch.net/test/read.cgi/tech/1589424805/
2020/09/10(木) 16:03:33.34ID:wdhKSMlq
変になるって、具体的に何?
2020/09/10(木) 18:50:19.73ID:6Z343NeL
>>252
>それは重々承知なんだけど C/C++ では分ける体制になってないから
そうか?
はちみつはそういう経験無いだけだろ
VCでだってクロスプラットフォームは可能だぞ
255デフォルトの名無しさん
垢版 |
2020/09/10(木) 18:55:15.35ID:h1ZKqHov
VSがクロス一番楽。
256デフォルトの名無しさん
垢版 |
2020/09/10(木) 18:56:59.66ID:h1ZKqHov
C/C++はコンパイラメーカーがローダーを用意していない。
これに尽きる。
2020/09/10(木) 19:04:13.58ID:wOYL1pS0
最近は何でもdockerに突っ込んでいる。
vscode + remote containerで開発環境の構築も楽になったし。
258デフォルトの名無しさん
垢版 |
2020/09/10(木) 19:05:01.58ID:ke8OXyHN
C++ moduleってテンプレート使ったクラスをモジュール化したとき
プリコンパイルヘッダと原理的に同じで機械語じゃなくて中間表現に
変換されるらしいんだけど、これってコンパイル速度が大幅に改善することはない
ってことだよね?
2020/09/10(木) 19:13:48.12ID:6Z343NeL
よく考えたインクルードでpch併用してるプロジェクトなら、普段のビルド大して変わらんかもだけど
pchが依存するヘッダを書き換えた場合のフルビルドみたいなのは避けやすくなるぽい??
260デフォルトの名無しさん
垢版 |
2020/09/10(木) 19:13:59.29ID:ke8OXyHN
プリコンパイルヘッダを試しに生成するのと
普通にコンパイルするのと試したら2割程度しか時間短縮できなかった
2020/09/10(木) 21:58:54.33ID:LwYTdpan
>>260
二割はでかいやろ。

>>258
従来からもたとえば gcc で LTO を有効にしたときは中間表現で持っておいて
リンク時に最適化とコード生成をやったりはする。
それと同程度のコンパイル速度だろうと考えると
モジュールの導入は速度にはそれほど寄与しないと思う。
262デフォルトの名無しさん
垢版 |
2020/09/10(木) 22:37:36.67ID:ke8OXyHN
うーん まぁチリツモと考えるとでかいか
夢見過ぎだったか
2020/09/10(木) 23:28:14.82ID:LwYTdpan
>>262
ジョジョ、それは高速化しようとするからだよ。
逆に考えるんだ、『もう十分に速い』と考えるんだ。
2020/09/10(木) 23:45:25.82ID:EIogAYj0
質問ですが
 double x = 0.3333;
 printf("x=%f\n", x); // 期待する表示: x=0.3333
みたいなBCD風表記→IEEE 754→再びBCD風表記
としたときに、元の表記と結果の表記が一致することは
保証されてますん?
2020/09/11(金) 00:13:13.30ID:iGbGHAE2
>>264
保証されない。
0.3333 は浮動小数点で正確に表現することは出来ないので誤差は生じる。
誤差があるところから再び十進数の表現にするんだから
元と同じ表現になることは期待できない。
2020/09/11(金) 00:15:27.86ID:ajBE7peV
されてない
2020/09/11(金) 00:22:49.83ID:WOjxtKnw
不可逆変換
2020/09/11(金) 00:27:13.22ID:1mBomO61
何がしたいんだろな。
2020/09/11(金) 00:31:20.53ID:hb2JlHSF
ちょっソ───スコ───ドに0.3333と書いたのに
0.33331とかに解釈になったらスゲーまずくね??
2020/09/11(金) 00:38:43.10ID:ajBE7peV
初心者スレは別にあるだろ
2020/09/11(金) 00:40:37.59ID:OVJtRCSC
さすがにもう少し精度が高くて、doubleなら
0.3333000000000001 くらいの誤差じゃない?(適当)
2020/09/11(金) 00:41:20.87ID:hb2JlHSF
何がしたいのかというと実行時計算ができる有理数クラスを書いたんじゃが
ソース値がソースコードに浮動小数点で書かれていた場合は当たり障りのない有理数にしたいわけで、
たとえば
 Rational x = 0.11;
と書けば済むところはそのまんま
 x.m_num == 11LL // 分子
 x.m_den == 100LL // 分母
とかになってホスイ
(必ずいちいちRational x = Rational(11, 100);と書かなければならないことはユーザー(≒漏れ自身)に強制したくない
2020/09/11(金) 00:43:42.19ID:hb2JlHSF
つかソースコードに書かれた浮動小数点数を文字列化して元に戻せることの重要性を
書いたコンパイラの教科書はマイナーかもしれんが実在したで(記憶モード

そのやり方こそ今思い出すべきなのだが手元に無いから質問すた、
2020/09/11(金) 00:44:51.33ID:ajBE7peV
>>272
ユーザ定義リテラルでも作れば?
2020/09/11(金) 00:45:17.34ID:OVJtRCSC
固定小数点?
2020/09/11(金) 00:50:39.51ID:hb2JlHSF
>>274
やだ

数値的にやるとしたらここ↓のalmost_equal<T>()でも使ってゴニョれば良いんかのう…
https://en.cppreference.com/w/cpp/types/numeric_limits/epsilon

しかし件の本にはこれと似たような演算を書いてあったような気がしないOTL
2020/09/11(金) 00:54:13.41ID:ajBE7peV
>>273
浮動小数ならやり方ははっきりしてんだよ
お前の場合BCDなんだろ?
2020/09/11(金) 00:59:52.73ID:ajBE7peV
>>276
そのRationalクラスが多倍長とかだったら無理だね
64bit/64bitでも無理だろ、たぶん
2020/09/11(金) 01:08:43.17ID:hb2JlHSF
>>278
しらそん
桁の十分不十分は応用にもよるし
足りないとわかったらRationalの方を多数桁対応させるは

とにかくRationalは見かけをdouble型と同様に扱えるように仕上げ鯛、
なぜなら真に走らせたいアルゴリズムはdoubleをtypedefして作ってあって、
それをRationalに差し替えるだけ!と思ってたら
単体テストが10億行ぐらい浮動小数点で書いてあったので…
2020/09/11(金) 01:27:41.74ID:ajBE7peV
それはわかったけど
>>264 は必要?
別にいらんと思うけど
2020/09/11(金) 01:52:30.29ID:tAPrmVM5
文字列受け取るコンストラクタ書くだけだろ
2020/09/11(金) 03:35:25.76ID:iBiKDQ69
char配列に変換して8バイト読み書きするだけのこと
文字列に変換することは忘れろ
2020/09/11(金) 12:52:59.43ID:WJYUzgW7
そもそも0と0.0を区別する方法がないのにどこまで意味のある事なのか
2020/09/11(金) 15:59:42.05ID:Cxw4gZ+X
> (必ずいちいちRational x = Rational(11, 100);と書かなければならないことはユーザー(≒漏れ自身)に強制したくない

無理だろ
Rational x = 0.1;
こんなの、どうすんだよ?
double型の0.1は1/10じゃねえぞ
2020/09/11(金) 16:00:39.94ID:Cxw4gZ+X
denが必ず10のべき、みたいなことにして
誤差が最小になるように頑張るならともかく
286デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:17:57.96ID:FpD9K4HS
>>272
Rational x = "0.11"; を許せばいい
2020/09/11(金) 16:29:19.36ID:6r5prnWG
>>279
仮にテストコードに 0.333333333333333 って書いてあったとしても
それは 0.3333333333333329818 のことだから、
0.333333333333333として受け取ってしまうと逆にテストに失敗するのでは?
2020/09/11(金) 16:36:45.19ID:G2VX17rJ
10億行ぐらい既存テストコードがあるとのことなので文字列とか全面書き換えになる案はNGなんでしょう
でもいい案はなさげ
一旦浮動小数になったら元のリテラルの復元はできないだろうな
289デフォルトの名無しさん
垢版 |
2020/09/11(金) 16:39:43.52ID:su+TWEMf
>文字列とか全面書き換え

Rational にする書き換えはOKなんだろ
2020/09/11(金) 16:43:40.92ID:G2VX17rJ
そりゃクラスの差し替えは局所的な置き換えで済むんじゃないの
浮動小数のリテラルを全部文字列に置き換えることに比べたら楽でしょ
まぁ本人が答えるべきだが状況はなんとなく推測できる
2020/09/11(金) 20:04:14.01ID:ua52u3Jr
そのくらい正規表現で置換すればいいだろ。
だいたい10億行のテストコードが仮に本当なら100%手書きじゃないから一つずつ確認しながら置換するなんてアホなことはしない。
有理数クラスなんて普通は枯れたライブラリ拾って来るけどな
2020/09/11(金) 20:18:44.50ID:G2VX17rJ
だからさ、そこは本人の希望なんだからあれこれ言ってもしかたないじゃん
正規表現で機械的に置き換えたらまずいものもあるかもしれないし
浮動小数と有理数で切り替えたいって言ってるからそのメンテコストもあるだろ
2020/09/11(金) 21:28:10.16ID:opulvzCM
ユーザー定義リテラルとか使ってboost::rationalでも生成したら?

やったことないからできるか知らんが。
2020/09/11(金) 21:35:23.73ID:em6XQ5sn
何にせよdoubleになった時点でリテラル表記の情報は失われるんだから、何がしかの書き換えをするしかない
それがイヤだ絶対やらんと言うなら、じゃあ不可能だよという答えにしかならない
2020/09/11(金) 21:51:53.86ID:aT3N5bZo
プリプロセッサを書けばどうだろう
296デフォルトの名無しさん
垢版 |
2020/09/11(金) 22:53:08.79ID:3mrNom4D
Rational に double の数値が直代入されてるところだけ文字列代入にするための
プリプロセッサ描けば良い話
2020/09/12(土) 05:53:05.89ID:2ljmp3qW
結論から言うと、

IEEE 754の値x → 10進数文字列 s→ IEEE 754の値x'
という変換を行った場合、x == x'となるかどうかはx次第であって一般に保証されないが、

10進数文字列s → IEEE 754の値x → 10進数文字列s'
という変換は、sが非正規化数だったりIEEE 754の仮数部で表現可能な桁数を超えない限り -- (1)
s == s'を保証可能

なぜなら、(1)の条件を満たすsとそのIEEE 754への変換結果xの食い違う条件は
sを2進数に変換したとき循環小数になる場合に限られるが(もとの10進数のsはもちろん循環小数ではない
この食い違いは±DBL_MINを超えないから以下略
(結局x→s'変換はalmost_equal<T>()的な処理が必要にはなるが、適切にやれば
 sの整数部の文字列化 ==> x -= (xの整数部) ==> x *= 10、
 の反復を何時やめればよいか確定する
2020/09/12(土) 05:55:29.22ID:2ljmp3qW
>>294
やだという理由は>>279の後半部で言い尽くされとる
2020/09/12(土) 08:39:01.67ID:U5yMllJ4
sagemathで
a=0.11
QQ(a)
とすると
11/100
が得られる
aの実体はMPFRのオブジェクト
まーsagemathのソースでも見とけば
300デフォルトの名無しさん
垢版 |
2020/09/12(土) 15:38:22.68ID:cDX1Q2rT
>>297
的外れ
2020/09/12(土) 15:47:40.14ID:JdE/Bv85
>>297
その前にリテラル表現→double値(お前が言うところのIEEE754の値)
という変換が入って、それが不可逆だから書き換えなしじゃ無理だっつってんだよ
Hoge(0.0)とHoge(0.00)に表現に応じた別の処理させるのはC++の範囲では不可能だ
302デフォルトの名無しさん
垢版 |
2020/09/12(土) 15:50:40.29ID:cDX1Q2rT
プリプロセッサなら可能
Cの仕様
2020/09/12(土) 15:54:45.19ID:JdE/Bv85
ああ、#で文字列化できるからこの場合はできるのか忘れてた
まあ対象の浮動小数を全部マクロで括らないといけないからどっちみち書き換えは発生するけどな
304デフォルトの名無しさん
垢版 |
2020/09/12(土) 15:56:41.81ID:cDX1Q2rT
おまえプリプロセッサが何か判ってないだろ
2020/09/12(土) 15:59:56.68ID:JdE/Bv85
ん?シンボルを文字列化する#演算子はプリプロセッサディレクティブの一つだぞ
何か間違ってるか?
306デフォルトの名無しさん
垢版 |
2020/09/12(土) 16:08:00.10ID:idwadC/M
問題はそこじゃない
2020/09/12(土) 16:17:43.12ID:JdE/Bv85
絡んでくるだけで具体的な問題を指摘できないカスは置いといて
プリプロセッサフェーズの後で0.0と0.00を区別する方法はないから279君の望みは叶わないでFA
プリプロでもdouble x = 0.00;とかを自動で書き換えるの無理でしょ
308デフォルトの名無しさん
垢版 |
2020/09/12(土) 16:19:33.34ID:idwadC/M
プリプロセッサを書けと言っている
2020/09/12(土) 16:28:52.93ID:erdZI+Jx
>>299
有理数の分母が10の冪という前提ならある程度の精度で出来そうだな。
2020/09/12(土) 17:27:31.95ID:JdE/Bv85
分母仮定せずに普通にディオファントス近似した方が誤差小さくなると思うんだけど
2020/09/12(土) 17:57:13.06ID:erdZI+Jx
10進リテラルで渡す前提なら分母が10の冪になってしまったら逆に誤差が大きいことになると思うが。
#約分とかは別として。
まぁ、1.0/3.0みたいなものも渡せるようにということなら確かにそうかも。
2020/09/12(土) 20:28:37.72ID:2ljmp3qW
とりあえずここまではできた;;
x=0.1: rt=1/10
x=0.11: rt=11/100
x=0.111: rt=111/1000
x=0.1111: rt=1111/10000
x=0.9: rt=9/10
x=0.99: rt=99/100
x=0.999: rt=999/1000
x=0.9999: rt=9999/10000
x=0.33333: rt=33333/100000
x=123.34567: rt=1233456699999999/10000000000000 // NG
x=123.345678: rt=123345678/1000000
x=123.3456789: rt=1233456788999999/10000000000000 // NG
x=12.34567: rt=1234567/100000
x=12: rt=12/1
x=123E-5: rt=123/100000
2020/09/12(土) 20:35:15.16ID:2ljmp3qW
わかったことは、
10進数文字列s → IEEE 754の値x → 10進数文字列s'
において、s→xのところで仮数部最小桁で丸めがおきたのかどうかの情報が無いと
xからsの復元が難しいケースがあるというこっちゃorz

コンパイラならs→xをやるのは自分自身なので、x→s'を行うライブラリと手を握ってうまいことやれる可能性があるが
xを与えられるだけのユーザープログラムではこれは対処が難しい
Ad-hocに.999999 = 1とみなす系のAd-hocな処置が必要かも試練、
2020/09/12(土) 20:45:44.57ID:JdE/Bv85
だからさ
例えばそれでrt=1233456699999999/10000000000000になったとして
どうやって元の表現が123.34567だったって判断するのさ
本当に123.345699999999って書かれてた場合と区別できるわけないんだけどどうするの?
123.34567を123.345699999999に間違えるのはダメだけど逆は許されるの?どうして?どういう仮定置いてるの?

その辺を何一つハッキリさせないまま勝手にやられても
何がしたいのか全くわからない
2020/09/12(土) 20:52:26.12ID:EJqlmNG1
まぁそんな追い込まんでも
自分で手を動かしてダメっぽいことい気づいたのは立派だよ
2020/09/12(土) 20:53:34.39ID:U5yMllJ4
>>314
そのことを言ってるんだろ、
>>313の丸め情報が必要ってのは
2020/09/12(土) 20:54:09.24ID:2ljmp3qW
>>314
>本当に123.345699999999って書かれてた場合と区別できるわけない
思い込みが激しいお人じゃ…
123.345699999999はギリ仮数部で表現可能な桁数に収まっているから
これは123.34569とは明確に区別可能

ていうか実際のところできたわ;;
x=0.1: rt=1/10
x=0.11: rt=11/100
x=0.111: rt=111/1000
x=0.1111: rt=1111/10000
x=0.9: rt=9/10
x=0.99: rt=99/100
x=0.999: rt=999/1000
x=0.9999: rt=9999/10000
x=0.33333: rt=33333/100000
x=123.34567: rt=12334567/100000
x=123.345678: rt=123345678/1000000
x=123.3456789: rt=1233456789/10000000
x=123.345699999999: rt=123345699999999/1000000000000
x=12.34567: rt=1234567/100000
x=12: rt=12/1
x=123E-5: rt=123/100000
2020/09/12(土) 20:59:43.51ID:JdE/Bv85
そりゃ0.00002も差があれば区別できるに決まってるわな
いやまあ自分が書き間違えたのが悪いんだけど結局何が問題だか全く理解してないのね
2020/09/12(土) 21:00:56.75ID:2ljmp3qW
>>318
何が問題なのかではkwsk
wwwwwwwwwww
2020/09/12(土) 21:08:30.19ID:EJqlmNG1
0.500000000000000166533453693773481063544750213623046875

これできる?
2020/09/12(土) 21:09:20.40ID:JdE/Bv85
別のリテラル表現が同じdouble値(IEEE754の値)を示す時に何をもって正しいとするかという
お前の勝手な俺様基準を何も説明しないまま公衆の面前でガチャガチャやってることが問題なんだよ
わかれ
2020/09/12(土) 21:18:05.26ID:2ljmp3qW
>>321
>>272を嫁、
気体動作は明確はなず
これを読んでもわからず妥当な反論ができもしないというのであれば
読み手のセンスの問題と判断せざるおえない

>>320
>>297を嫁、
提示されたテストケースは(1)を満たしていないから範囲外
2020/09/12(土) 21:22:42.84ID:EJqlmNG1
いやいやそれでどやられてもw

> 10進数文字列s → IEEE 754の値x → 10進数文字列s'
> という変換は、sが非正規化数だったりIEEE 754の仮数部で表現可能な桁数を超えない限り -- (1)
> s == s'を保証可能

仮数部で表現可能かどうかってどうやって判定するわけ?
2020/09/12(土) 21:30:02.39ID:2ljmp3qW
うれしげにコード貼る、
https://ideone.com/EKHKWG
実行結果は>>317と同じ

>>313の問題があるから
0.999999(9の循環小数)を1.0と見なす処置を入れた結果、考えていたテストケースは全部通った。
結局、
 10進数文字列s → IEEE 754の値x → 10進数文字列s'
でs'が厳密なsの復元にならないケースがあるはずだがまだ見つかっていない。
ま、あったとしても有理数として解釈する上では数値としての大差は無いので問題ないはず、、、
2020/09/12(土) 21:33:35.13ID:2ljmp3qW
>>323
入力となる浮動小数点数を文字列として書いた時点でワカル
52 bitでまったく表現しきれない桁数なら(1)を満たさない
そうでなく、かつ(xE+s表記で与えたとして)指数sが極端に小さくなければ(xの桁数+sが-1022以上なら)(1)を満たす
2020/09/12(土) 21:40:34.66ID:JdE/Bv85
>>325
なんだ、仮数部で表現可能かのチェックのために結局20億行テストコードを文字列として解析する必要があるわけね
じゃあその時に文字列として扱うようにコード直せよ
どうせそういうスクリプトが必要なんだからついでにやればいいね、よかったこれで解決だ

あほくさ
2020/09/12(土) 21:43:09.42ID:EJqlmNG1
>>325
は?書く?
10億行のテストコードあんだろ?
それが(1)を満たすかどうか確認する必要があるんだろ?

だいたい仮数におさまってたら大丈夫ってそりゃそうだろよ
誤差が問題なのにそれを考えなくていいケースなんだもの
2020/09/12(土) 21:47:15.04ID:2ljmp3qW
>>326
>なんだ、仮数部で表現可能かのチェックのために結局20億行テストコードを文字列として解析する必要があるわけね
なんでそうなる必要があるのかkwsk、
10億行のテストコードは手入力なので52 bitで表現できないような桁数の数値は無いし、

とまれそこまで認識が進んだのであれば、あと何か言いたければ>>324のバグ探しでもしてちょんまげ
看板に偽りありを示すテストケースを指摘してくれたら大金星と言える
2020/09/12(土) 21:52:28.75ID:GweMiOHC
>ま、あったとしても有理数として解釈する上では数値としての大差は無いので問題ないはず、、、
ならRationalなんていらないね(´・ω・`)
2020/09/12(土) 21:58:02.93ID:JdE/Bv85
>>328
はあ?なんだそれ?
全部お前に都合がいいリテラルしか書いてない前提なんだったら、お前がさっきから書き散らかしてる落書きなんも必要ねえじゃん
話にならんわ下らねえ
2020/09/12(土) 22:03:02.47ID:2ljmp3qW
>>330
単体テストというのは真に走らせたいアルゴリズム(>>279)の単体テストのことであって、
別段IEEE 754から有理数への変換のエッジケースを書く必要は無いんである。
問題の所在自体を(よく読みもせずに)つついても無駄じゃよ

それよか何か言いたいのであれば>>324をデバッグ汁、
2020/09/12(土) 22:04:39.19ID:JdE/Bv85
あっはいどうでもいいです
(仮数部)/2^52に一番近い10^nを分母とする分数を探す簡単なさんすうの問題を解くだけの話だったんですね
がんばって
2020/09/12(土) 22:17:12.69ID:EJqlmNG1
手入力だから大丈夫ってのはお前しか判断できないよね?
成り立たない数字あげてもそれは手入力しないと言われるわけでしょ?
おれもあほくさくなった
2020/09/12(土) 22:28:23.42ID:MEMmSzVD
俺ぐらいの達人になると、もう初期段階で
「あ、これさわったらアカン人や・・」って雰囲気でわかるようになる
2020/09/12(土) 22:31:11.00ID:GweMiOHC
10億行手入力したとか言い放つキチガイ相手にするの馬鹿らしくない?
1行/秒でも1700人月よ
336デフォルトの名無しさん
垢版 |
2020/09/12(土) 22:45:00.53ID:SzTm78BI
浮動小数点型としてメモリに載せた時点でアウト
文字列とかでやるしかなくね
337285
垢版 |
2020/09/13(日) 06:06:47.90ID:2wZmRDXk
俺の予言当たってやんのw
2020/09/13(日) 08:25:17.62ID:Xp7zp8nz
単に誤差最小のものを選ぶだけだと>>314みたいになるから、1ULPか2ULPの誤差範囲内で
冪数が最小になるものを選ぶのがいいかな。
2020/09/13(日) 12:55:10.97ID:P44KoBmR
連分数展開でディオファントス近似する方法なんてその辺にいくらでも転がってるのに
2020/09/13(日) 18:33:50.24ID:LIu3OWuw
./hello  > hello.txt
ってやったときhelloのprintfが無限ループだったら無限にhello.txtを上書きし続けますか?
2020/09/13(日) 19:12:18.99ID:eePcELKn
>>340
上書きしません、追記し続けます。
2020/09/13(日) 19:39:02.91ID:cE5a2Csh
>>340
上書きなんてしないよ
どんどんprintfの出力内容を追加していくだけ
2020/09/13(日) 23:14:53.91ID:n2e2K14L
./hello < hello.txt > hello.txt
2020/09/14(月) 03:25:56.23ID:13FXnr3U
Pythonで書いたGUIアプリをC++で書き直す日々が始まるお(*´ω`*)
2020/09/14(月) 03:28:48.08ID:p1+vn7b/
イテレータを i 個分進める (戻す) のって i 回インクリメント (デクリメント) するしかないの?

一気に進める方法があったら教えて下さい
2020/09/14(月) 03:32:02.02ID:p1+vn7b/
ああvectorならできてsetなら無理ってことか
ググったらわかりました
すみませんでした
2020/09/14(月) 08:44:25.84ID:NtiDKVVf
>>340
わざとやってみたことあるけど
途中で飽きてきてCtrl+C
うすらでかいファイルができていた

ずーっと放置するとHDDの空き容量がなくなって
stdoutへの書き込みが失敗するようになるはず
それがOSのファイルにも使うドライブだとシステムダウンして
親ガメこけたら皆こけただね
2020/09/14(月) 09:06:31.69ID:dr1ZmQsx
>>346
つstd::next
自分で増分するのに比べて早くはならないと思う
349デフォルトの名無しさん
垢版 |
2020/09/14(月) 09:54:42.26ID:gMM3Z1ji
>>334
2020/09/14(月) 10:42:29.67ID:/vUb6N4m
>>346
advance
2020/09/15(火) 15:20:33.02ID:WaVlZlwn
typedef struct HOGE
{
 int x;
 int y;

 HOGE(int x, int y)
 {
  this->x = x;
  this->y = y;
 }
} hoge_t;

class TEST {
 hoge_t h(1, 2); // expected identifier before numeric constant
}

で、// のとおりエラーが出てしまいます。
typedef struct と class の違いが理解できていないのが悪いのですが
メンバ変数として利用するとき初期化は出来ないのでしょうか。
2020/09/15(火) 15:26:43.04ID:YjwP830M
>>351
丸括弧じゃなくブレースだよ
それとTESTの最後にセミコロンがない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。