私の要件は、あるオブジェクトの内容を取得して、それを別の型に強制することです。実際には、コンテンツはネイティブ C++ クラスへのポインターであり、ドット ネット オブジェクトは、ドット ネットが C++ にアクセスできるようにするラッパーです。したがって、継承階層内のどのクラスにアクセスするかによって、同じ C++ オブジェクトが異なるラッパーを持つ場合があります。そして、これらのラッパーには継承関係がありません。
VB.netで私は書くことができます。
Dim s1 As Short = 13
Dim l1 As Long = s1
今書きたいのは、
Dim v1 As ValueTest1 = New ValueTest1(13)
Dim v2 As ValueTest2 = v1
ValueTest1 と ValueTest2 は、C++/CLI で値の型として定義されています。したがって、ValueTest1 に ValueTest2 を受け取るコンストラクターがありますが、それでもコンパイラーは ValueTest1 から ValueTest2 への型強制をサポートしません。
イライラします。
暗黙的な変換を行う方法について何か提案はありますか?
OK 演算子の使用は機能しましたが、オブジェクトを使用する場合には追加の問題があります。
Dim v1 As ValueTest1 = New ValueTest1(13)
Dim v2 As ValueTest2 = v1 ' OK
Dim o1 As Object = v1
Dim v3 As ValueTest2 = o1 ' fails with the exception below
タイプ 'System.InvalidCastException' の初回例外が test_xxxxx.dll で発生しました
追加情報: 指定されたキャストは無効です。