0

私はこの機能を持っています:

function AddImpulse(Vector2D impulse)
{
    `log("ADD IMPULSE: " $ impulse);
}

問題は、「Right type is incompatible with '$'」というエラーが表示されることです。組み込みのベクター クラスは自動的に文字列に強制変換されますが、Vector2D クラスは演算子のオーバーロードのない組み込みの構造体に過ぎないようです。または自動変換。

私は状況を助ける演算子のオーバーロードを書きましたが、オーバーロードの宣言をオブジェクトクラスに置かない限り(これは行うべきではないと私は信じています)、それを使用する可能性のあるすべてのクラスで宣言する必要があります:

static final operator(40) string $ (string A, Vector2D B)
{
    return A $ string(B.x) $ ", " $ string(B.y);
}

毎回これを行う必要がないように、これを一般的に行う方法はありますか:

`log("ADD IMPULSE: " $ impulse.x $ "," $ impulse.Y);

Vector2D の場合は悪くありませんが、構造体やクラスが大きくなると扱いにくくなります。

4

1 に答える 1