見出し画像

【Console Application】ファイルとデータベース 284【学習記】

今回の概略

移植した AnalyzeArgs のメンバーの設定が良くなくて直す話🤤

#学習記 #Objective_C

【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 の縛りが発生してるのだろうなと思う😞

ぼっこぼこ😞
そういや移植した時に property とかちゃんと設定してないとかだったかも🙄
あと StrArray 作る前だったからそれ使う形にしようず🤤


AnalyzeArgs (StdlibOC)

ほーら property になってない😞
ダメじゃないけどキャストしないとダメなのよこれじゃ🙄

コレでヨシ…の筈😑


AnalyzeArgs (main) 2

戻ってきたらだいたい解決🤤
validOpt はインスタンス用だから処理用インスタンス作れば大丈夫かな🤤

よく考えたら validOpt の返値は NSString なので OptSw を new しないとダメだと気付く等🙄


次回は

main 移植に入れそう🤤

いいなと思ったら応援しよう!