2017-03-04 12 views
0

私は、次のcodeを持っている:未解決の回オペレータ

val temp1 = Quat(1f, Vec3(0, 1, 0)).normalize() 
val temp2 = Quat(.5f, Vec3(1, 0, 0)).normalize() 

val a = temp1 * Vec3(0, 1, 0) 
val transformed0 = a * temp1.inverse() // error 

最初*が正しくこのoperatorQuatクラスに解決されます。

operator fun times(b: Vec3) = mul(Vec3(), this, b) 

のでaVec3と最後の行にありますwe got a Vec3 * Quat

そしてこのセコ私は次のように入力して強制しようとした

operator fun Vec3.times(b: Quat) = mul(Vec3(), this, b) 

:ndは私が使用したいのですが、オペレータがこのfileのトップレベルで定義されてimport times

が、提案times

はありません私が探している人

何が問題なのですか?

+0

'temp1.inverse'の戻り値の型は何ですか? 'ax(temp1.inverse())'のような関数形式で 'times'拡張を呼び出すと、正しく解決されますか? – Ilya

+0

ああ、それは面倒だった...私は機能的な形でそれを書いて、Intellijは解決されたと解決されていない間にジャンプしていた.. alt + enter、import、それは間違いなく解決した。オペレーターに戻って、完璧に切り替わった..ありがとうイリーア、あなたが答えたいなら、私はそれを受け入れる:) – elect

答えて

1

延長operator fun Vec3.times(b: Quat)がパッケージquatで定義されているので、あなたがオペレーターをインポートするときに、そのパッケージ名を指定する必要があります。

import quat.times 
// or 
import quat.*