これは、C と C++ の両方の理論的な問題です。
次のように非常に簡単に定義された4x4マトリックスタイプがあります。
typedef float Matrix44[16];
Matrix44
また、パラメーターとして aを取る多くのメソッドがあります。たとえば、次のようになります。
bool matrixIsIdentity(Matrix44 m);
また、ヒープに大きなメモリ領域を事前に割り当ててから、そのプリフェッチされたメモリの割り当てを手動で管理するカスタム メモリ割り当てスキームも用意しています。そのため、 malloc
/new
を独自の実装に置き換え/オーバーロードしました。問題は、 custommalloc
との両方が、new
本質的に、オブジェクトではなくポインターを返すことです。
通常、私は単に次のことを行います。
// Method 1
1] Matrix44 mat = { ... };
2] bool res = matrixIsIdentity(mat);
mat
ただし、1行目は、私が望むようにカスタムメモリ領域ではなく、スタックに割り当てられています。別の方法は次のとおりです。
// Method 2
1] Matrix44 *mmat = myMalloc(...);
1a] Matrix44 *nmat = new ...
2] bool res = matrixIsIdentity(*mat);
ここでの問題は、逆参照演算子をコードに散らかさなければならないことです。1 つのオプションは、代わりにすべてのメソッドを書き直すことMatrix44*
ですが、これは理論的なものであるため、それはオプションではないと想定したいと思います。
したがって、私の質問は次のようになります: のように C および/または C++ で自動変数を宣言する方法はありMethod 1 Line 1
ますMethod 2 Line 1
か?
(これにはコンパイラ関連の議論が含まれる可能性があることを理解していますが、その効果のためにタグを追加していません)