問題タブ [cliext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
146 参照

c# - STL / CLRライブラリはIComparableを使用して==演算子を実装し、NullReferenceExceptionをスローします

IComparableインターフェイスを実装していない.NETクラスがありました。このクラスにインターフェイスを実装した後IComparable、クラスを使用するいくつかのC ++コードによって、予期しない動作が変更されました。今それは投げますNullReferenceException

}

問題は、実装を使用して操作を実行しif (nullptr == unitNames[i])始めた行にありました。IComparable==

その理由は、cliextユーティリティヘッダーファイルからのテンプレートでした。

質問1:_Left私はC ++の専門家ではないので、この実装がメソッドを呼び出す前にnullチェックを実行しない理由を誰かが説明できますCompareTo()か?Equals()とOperator ==のオーバーロードに関するMSDNガイドラインによると内で何かを実行する前にnullチェックを実行する必要があります==

質問2:そのような予測できない動作につながる使用法の欠陥はおそらくありますか?

0 投票する
0 に答える
864 参照

c++ - Visual C++ でのリンカー エラー 2022

次のヘッダー ファイル (data.h) があります。

および次の cpp ファイル (data.cpp):

これにより、次のリンカ エラーが発生します。

これは、戻り値の型として cliext::vector を使用しようとしているときにのみ発生します。このエラーは、 std::vector< std::string > を戻り値の型として使用しているときに消えますが、 String^ のベクトルを返したいです。このエラーの原因がわかりません。このエラーは、cliext::vector を戻り値の型として使用する場合にのみ発生します。一般的な処理に使用すると、正常に動作します。

0 投票する
1 に答える
287 参照

.net - cliext を介した C++CLI .NET および STL との互換性の問題

私は単純なWindows::FormsGUI に取り組んでおり、STL を使用してパッケージを使用しようとすると、いくつかの問題が発生vectorpairますcliext。基本的に、基礎となるcliext::vector< cliext::pair<A, B> >. 私は今のところ効率をまったく気にしません。そのすべてのインスタンスはほんの一握りのエントリしか保持しないので、単純な線形検索は問題になりません。

Windows::Formsしかし、インスタンス内でこれらのマップを使用したいので、マネージド クラスにしました。問題は、マップの個々のエントリを変更する方法がわからないことです。

これが基本的なインターフェースです(簡潔にするために関数定義をここに置きます):

どちらのSetInternalアプローチも機能しません。イテレータのアプローチでは、「最初の左はクラス/構造体/共用体でなければなりません..もしかして->」というコンパイルエラーが表示されますが、Visual Studioはすでにそれが間違っていると言っているので、それは私には意味がありません使用 -> と使用する場合。IntelliSense では、一覧に "最初" と "2 番目" も表示されます。

直接的なアプローチも機能しません。コンパイルして実行しますが、実際にはペアの値を変更しません (tr​​ue が返された場合でも!)。

さらに、実際には正常に動作するため、SetExternal 関数を含めました。bmapこれは、インデックスによるベクトルの検索が正常に機能し、条件付き onbmap[i]が正常であり、外部変数を設定できることを示しています。

SetInternalベクター内の個々のペアを変更するメソッドを作成する方法について何か考えはありますか? また、bimap を外部で反復処理する方法も必要であり、const イテレータを使用したかった (つまり、const イテレータを基になる の開始と終了に返すメンバー メソッドを使用したいbmap) が、それを外部で使用して逆参照しようとすると、 iteratorSetInternalByLeftWithIterator上記のメソッドで反復子を逆参照しようとしたときと同じエラーが発生します。

ありがとうございました!