Console.WriteLine(p.Number);}このように変数の代入、取り出しでメソッド呼び出しになり、いちいちメソッド呼び出しする手間が削減できます。これをC++で実現しようという試みは、昔から色々と皆さん考えられているようなのですが、ある程度問題を解決できたかなと思うのでC++でプロパティを使うための方法を紹介したいと思います。キーワードを使用するアイデアがありますが、それって、C++とは別の言語の話なので論外として、別の実現方法を考えたいと思います。言いたいところですが、実は、以下サイト様にとても良い解決策があり、基本的に問題が解決しています。8このコード凄いですね。プロパティとほとんど同じ感じになります。公開しているのと大差ない状態となっています。そこで、上記クラスを拡張し任意の処理をset/get時に挿入できるように拡張したいと思います。処理を外部から指定できるように拡張します。以下、VisualStudio2017のC++で実装しています。}};プロパティを使ったクラス定義と使用方法は以下の通りです。アロー演算子のオーバーロードによりget後に以下のように同じ行でメンバー参照ができるsample.sample->xxx();色々やっているので、パフォーマンスが悪くなるかもしれませんがあまり気にしないようにします。置き換える以下、ゲーム作成ライブラリのCocos2d-xの話です。いうマクロがあります。定義内容は以下の通り。実装をVisualStudioで行っている関係で、このマクロを使用すると、以下のインスペクションがずっと表示されて大変うっとおしいんですよね...マクロの使用感もちょっと微妙ですし。今回作成したプロパティでCC_SYNTHESIZEを置き換えようと思います。};};CC_SYNTHESIZE_RETAINを置き換える次は、CC_SYNTHESIZE_RETAINをプロパティ構文に置き換えたいと思います。このマクロはsetter/getterを展開するとともにsetされたときに参照カウントを+1、参照が外れる時に-1される処理を含みます。マクロの実装は以下の通りです。自分のC++のレベルだと、先ほどのプロパティ構文を直接拡張する方法では実現できそうにないため、Refオフジェクト専用のPropertyとして、「PropertyRef」を作成します。}};マクロと同じように、プロパティへオブジェクトを追加すると参照カウントが+1され、他のオブジェクトやnullptrが再設定されると以前のオブジェクトの参照カウントを-1するように処理を拡張しました。上記メソッドの使用方法は以下の通りです。};};こうすることによって、プロパティに対し以下操作で参照カウントが増減します。ようにフィールドの初期化をどこかでやらないとエラーが起きるかもしれません。(PODのデフォルト初期化関係で未割当だとクラッシュします。何回か改善した結果、大体マクロと同程度くらいのシンプルさになったと思います。この考え方自体は通常のC++でも使用できるので、ゲームエンジン以外にも役に立つかもしれません。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。ArticleC#で2次元配列を管理するクラスを作成する【C#】2次元配列から2次元配列を切り出すC#でオブジェクト初期化子を使った時の丸カッコの有無DOTweenのアニメーションをTimeLineでプレビューするC#の配列をインデックス付きforeachするスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。