12.6.7.11 CPP0010 - 타입 매개변수를 해석할 수 없음(Unable to Resolve Type Parameter)

12.6.7.11 CPP0010 - 타입 매개변수를 해석할 수 없음(Unable to Resolve Type Parameter)

설명(Description)

일반 haxe 객체의 타입 매개변수는 타입 삭제(type erasure)를 사용하지만, 네이티브 마셜링 타입의 타입 매개변수는 C++ 템플릿 매개변수를 나타냅니다. 이 차이 때문에 타입 매개변수는 그 구체적인 타입으로 해석 가능해야 합니다. Haxe가 그렇게 할 수 없으면 이 오류가 생성됩니다.

이 문제를 해결하려면 Haxe가 매개변수를 해석할 수 있게 하는 타입 힌트나 타입 검사를 명시적으로 추가해야 합니다.

예제(Examples)

다음 예제는 CPP0010을 생성합니다.

@:semantics(value)
@:cpp.ValueType
extern class Foo {
    function new():Void;
    function bar<T>():T;
}

function main() {
    final f = new Foo();

    trace(f.bar()); // CPP0010
}

trace는 첫 번째 인자로 Dynamic을 받아들이므로 Haxe의 타입 추론이 T를 유니파이할 대상이 없어 이 오류가 발생합니다. 다음 두 예제는 이 오류를 해결하는 방법입니다.

@:semantics(value)
@:cpp.ValueType
extern class Foo {
    function new():Void;
    function bar<T>():T;
}

function main() {
    final f = new Foo();

    trace((f.bar() : Int)); // Type check to allow Haxe to resolve T with Int.
}
@:semantics(value)
@:cpp.ValueType
extern class Foo {
    function new():Void;
    function bar<T>():T;
}

function main() {
    final f = new Foo();
    final v : Int = f.bar(); // Variable with type hint to allow Haxe to resolve T with Int.

    trace(v);
}

출처: CPP0010 - Unable to Resolve Type Parameter

더 알아보기