私はこのような関数を作成できる言語のようなJavascriptから来ています。C++でのオブジェクトリテラル代替
function tween(obj, tweenParams, time, tweenOptions);
これは同様に使用されている:それは明確ではない場合、これは1秒の遅延で5回ループし、1秒にわたって10にmySpriteがのxおよびyプロパティをlerps
tween(mySprite, {x: 10, y: 10}, 1, {startDelay: 1, loops: 5});
。 tweenParamsにはobjが持つ可能性のある値を含めることができ、tweenOptionsは固定構造体です。
これはC++でどのように簡潔であるかを知りたいのですが、構造体と配列の初期化はこれを表現するのに十分柔軟ではないようです。私の最高の推測では、複数のトゥイーン関数を一度に1つのプロパティと呼び出す必要があります。
TweenOptions opts = {};
opts.startDelay = 1;
opts.loops = 5;
tween(&mySprite.x, 10, 1, opts);
tween(&mySprite.y, 10, 1, opts);
C++の高度な機能についてよくわかりませんが、演算子のオーバーロードやカスタムの初期化が私を助けてくれますか?
EDIT:明確にするために、私はJavascriptの例と正確に一致するとは思っていませんが、これは合理的にどのように簡潔であるかを知りたいだけです。
は残念ながら、C++は、現在、このきれいな何かを持っていません。 C++ 20は*指定された初期化子*を追加します。現時点では、Builderパターンを解決する必要があります。 – Justin
あなたは 'tween(mySprite、{x:10、y:10}、1、{startDelay:1、loops:5}); 'を書くことはできませんが、' tween {10,10}、1、{1,5}); '。あなたは[良いC + +の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver
C + +はJavaScriptではない方法を学ぶことができます。あなたのJavaScriptコードに表示されているテクニックは賛成ではなく、エラーが起こりやすいです。誰かが誤字があった場合にどうなるか考えてみてください。あなたはC++スタイルを書いているときに「解決」しなければなりません。 –