レス頂いてありがとうございます。
「大きめの構造体」とだけ書いて、用途などを限定しなかったので、
話がわかりにくかったですね・・
「算術に使う構造体」とか「ポインタなどを含まないプレーンな構造体」など
的を絞ればよかったかもしれません。
構造体はC++ではクラスに含まれるので、広く見るといろんな捉え方ありますよね。
>beatleさん
おっとその発想がありましたか。
スマートポインタはあんまり使ったことないので以下間違っていたら済みません。
関数の中身はこのような形になるでしょうか。
CODE:
std::shared_ptr MakeSomeMatrix()
{
std::shared_ptr mat(new Matrix44);
//mat-> に対する値の設定
return mat;
}
CODE:
//生成と計算(各関数は定義済みとして)
std::shared_ptr matA = MakeHogeMatrix();
std::shared_ptr matB = MakePiyoMatrix();
std::shared_ptr result = Multiply(matA, matB);
//ローカル変数で受け取るとき(関数内で確保して、返すと即時破棄?)
Matrix4x4 localVal = *MakeSomeMatrix();
生成するたび計算するたびに動的確保が発生するのが気になりました。
パフォーマンス気にしないといった手前、動的確保にどうこう言うのは変ですかね・・
他の言語では普通なことっぽい?
スマートポインタでのやり取りを半ば強制してしまうのが少々難ありに感じました。
ただ、動的確保を前提とするような複雑なクラスの運用としては適しているかと思います。
>GRAMさん
考えていたことは、大体同じように感じます。
>なんというか直観的じゃないんですよね。add( A, B, Out )みたいな書き方よりも Out = add( A, B )のほうがわかりやすい気がします。
算術クラスの利用時には特にそう感じます。
命名の妥当性については考慮してませんでした。
例では単純化するために単に同じ名前にしました。
(でも人に使ってもらうときは命名大事ですね。)