![見出し画像](https://assets.st-note.com/production/uploads/images/103833828/rectangle_large_type_2_8ac2a24d2316c2a509f96d6e234c6724.png?width=1200)
【Console Application】ファイルとデータベース 284【学習記】
今回の概略
移植した AnalyzeArgs のメンバーの設定が良くなくて直す話🤤
【Console Application】ファイルとデータベース【学習記】
仕様
https://note.com/sayka/n/nb8a67fa90a64?magazine_key=m7bb64c6a359f#br1mB
仕様
レコード
・レベル
1-12
・難易度
b,n,h,a,l
・曲名
・ランプ
-,x,a,e,c,h,e,f
オプションスイッチ
-u file.csv # 更新(略値)
ファイル名だけ指定した場合更新処理と見做す
-d file.csv # 削除
-p # csv 出力(略値)
何も指定せずに起動した場合出力処理と見做す
-v # バージョン
-h # ヘルプ
----備忘録
(現在無し)
前回の粗筋
main もヘッダ作ったお🤤
AnalyzeArgs (main)
で、 main 用のゲタ AnalyzeArgs の名前が衝突する件に関して😑
確か Java 系はこういう C 言語系で起きる衝突を防ぐ為に package 宣言を作ったんじゃなかったっけかな🤔
その記憶が定かなら解決方法は名前を変える以外無いけど C++ なら或いは…?🤤
Objective-Cのクラスプレフィックスはキャメルケースにするべきではないか
https://marycore.jp/prog/objective-c/class-name-using-camel-case/
結局Objective-Cに名前空間の概念が存在しない以上、名前衝突の問題からは逃れられないのです。
まぁ、想定通り😑
名前を変えれば良い。それだけなんだけど良くないと考える人が多く C++ では名前空間という概念が生まれたわけなのよね🙄
でも OC のクラスはそもそも糖衣構文の一種なので挙動は C 基準だから C++ の名前空間は使えない…のかな?🤔
………
軽く調べても「名前空間無いからなぁ」なので拡張子 .mm にしたところで想定通り C の縛りが発生してるのだろうなと思う😞
![](https://assets.st-note.com/img/1682366060667-n5y8QCaF5Q.jpg)
ぼっこぼこ😞
そういや移植した時に property とかちゃんと設定してないとかだったかも🙄
あと StrArray 作る前だったからそれ使う形にしようず🤤
AnalyzeArgs (StdlibOC)
![](https://assets.st-note.com/img/1682366075485-l97PxmpUuO.jpg)
ほーら property になってない😞
ダメじゃないけどキャストしないとダメなのよこれじゃ🙄
![](https://assets.st-note.com/img/1682366087020-s26MdXsSXG.jpg)
コレでヨシ…の筈😑
AnalyzeArgs (main) 2
![](https://assets.st-note.com/img/1682366103720-pluy0iUhIi.jpg)
戻ってきたらだいたい解決🤤
validOpt はインスタンス用だから処理用インスタンス作れば大丈夫かな🤤
![](https://assets.st-note.com/img/1682366116380-JTqD0wtiUE.jpg)
よく考えたら validOpt の返値は NSString なので OptSw を new しないとダメだと気付く等🙄
次回は
main 移植に入れそう🤤