0
は、私は、次のしているテストケース:エッフェルの継承とカーソルの使用[コンパイルすることはできません]
test_different_cursor: BOOLEAN
local
cursor: SET_ITERATION_CURSOR[INTEGER, INTEGER]
sets: ARRAY[SET[INTEGER, INTEGER]]
do
create sets.make_empty
check attached {SET_ITERATION_CURSOR[INTEGER, INTEGER]} d.different_cursor as current_cursor then
cursor := current_cursor
end
from
until
cursor.after
loop
sets.force (cursor.item, sets.count + 1)
cursor.forth
end
end
ここで、〜端からのループでは、私は、Arrayクラスの力機能を呼び出そうが、コンパイラは言い続けますその行のエラーを次
Error code: VUAR(2)
Type error: non-compatible actual argument in feature call.
What to do: make sure that type of actual argument is compatible with
the type of corresponding formal argument.
Class: MY_TESTS
Feature: test_different_cursor
Called feature: force (v: [like item] G; i: INTEGER_32) from ARRAY
Argument name: v
Argument position: 1
Formal argument type: SET [INTEGER_32, INTEGER_32]
Actual argument type: TUPLE [INTEGER_32, INTEGER_32]
Line: 193
loop
-> sets.force (cursor.item, sets.count + 1)
cursor.forth
をこの場合、私がARRAYクラスを継承SETクラスを作成し、そこに力機能を再定義する必要があるように思えます。しかし、私はそれがコンパイルエラーを修正する正しい方法であるとは本当に確信していません。私のSETクラスの外観は次のとおりです。
class
SET[A, B]
create
make
feature
valueA: A
valueB: B
feature
make (first: A; second: B)
do
valueA := first
valueB := second
end
end
これを解決するにはどうすればよいですか?
にライン
をフィーチャー
test_different_cursor
にローカル変数を追加し、変更することで行うことができますVUAR(2) '、例えば実際の引数の型。現在のコードから、 'cursor.item'が何を返すのかを推測することは難しいです。あるいは、 'SET_ITERATION_CURSOR'クラスの短い形式を提供することもできます。 –
@AlexanderKogtenkovエラーコード:VUAR(2)型エラー:フィーチャコールで互換性のない実際の引数。対処:実際の引数の型が対応する仮引数の型と互換性があることを確認します。クラス:MY_TESTS機能:test_different_cursor – Miku
タイプはどうですか? –