問題タブ [operator-keyword]
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.
c++ - << 演算子をオーバーロードするにはどうすればよいですか?
が呼び出されるたびに関数を呼び出すつもりm_logger<<"hello"<<"world"
です。m_logger はストリーム型です。
だから私は次の署名で << をオーバーロードすることにしました
ただし、vc コンパイラは次のエラーを返します。
エラー C2666: 'operator <<' : 6 つのオーバーロードに同様の変換があります
これを達成する他の方法はありますか?私の目的は、ofstream オブジェクトへのすべての書き込み操作を別の関数に転用することです
自分のカルスのオブジェクトを作成するのはうまくいきますが、システム定義のすべての型を文字列またはchar *に型キャストする通常のオブストリームオブジェクトのように機能させるにはどうすればよいですか。私は1つのアプローチがすべてのタイプの演算子をオーバーロードすることであることを知っていますが、よりクリーンなアプローチはありますか
c++ - ofstream または ostream 型はどのようにすべての型を文字列にキャストしますか?
ostream オブジェクトに渡されたシステム定義のユーザー型は、文字列または char* に変換されますか?
cout<<4<<"Hello World"; のように。
これはどのように達成されますか? << 演算子はすべての型に対してオーバーロードされていますか? オーバーロードされた汎用関数を 1 つだけ使用してそれを達成する方法はありますか? つまり、1 つのパラメーター (void* など) を持つオーバーロードされたオペレーター メソッドを 1 つだけ持つことができ、そのメソッド内で整数を char* に型キャストする方法を決定できます。
テンプレートieを使用して演算子<<をオーバーロードすると、部分的に機能しました
だからこれはうまくいく
ただし、これを行うとコンパイラエラーが発生します
エラー C2678: バイナリ '<<' : 'UIStream' 型の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)
std::endl もオブジェクトの型ではありませんか?
c++ - int + obj としての C++ での演算子のオーバーロード
私は次のクラスを持っています:-
これは、次のように使用する限り正常に機能します:-
しかし、私はこれを行うことができません:-
どうすればこれを達成できますか??
c++ - C++ 演算子のオーバーロード - クラスからのキャスト
Windows コードを Linux に移植しているときに、GCC 4.2.3 で次のエラー メッセージが表示されました。(はい、少し古いバージョンであることは承知していますが、簡単にアップグレードすることはできません。)
このエラーを生成するために次のコードを使用しています。
誰もこのエラーを経験しましたか? さらに重要なことは、それを回避する方法は? (確かに、GetChar()
などGetList()
の関数を使用してオーバーロードを完全に回避することは可能ですが、私はそれを避けたいと思います。)
(ちなみに、「operator unsigned char()
」を削除すると、エラーが削除されます。)
subsonic - 問題の原因となるテーブルと列の名前
T4 linq テンプレートが subsonic 3 を使用して MySql db のクラスを生成するときに問題が発生します。
テーブル名「operator」の 1 つが、Context.cs で生成されたクラスで問題を引き起こしているようです。Context.cs の次のコード行では、Visual Studio は<operator>
ac# 演算子として認識され、"Type expected" のコンパイル エラーが生成されます。
データベースのテーブルと列の名前を変更せずに、これを回避できる方法はありますか? たとえば、Settings.ttinclude で何かをハードコーディングして、特定の db テーブルや列に異なる名前を使用またはマップしますか?
c++ - C++ イテレータ クラスで *(iterator + n) と *(n + iterator) をオーバーロードしますか?
(注: 私はこのプロジェクトを学習用に書いています。冗長であるというコメントは...ええと、冗長です。;)
私はランダム アクセス イテレータを実装しようとしていますが、このテーマに関する文献はほとんど見つかりませんでした。そのため、Wikpedia のオペレータ オーバーロード プロトタイプのリストと組み合わせて試行錯誤を繰り返しています。これまでのところ十分に機能していますが、問題が発生しました。
次のようなコード
機能し、文字列の最初の文字を出力します。ただし、*(i + 1) は機能せず、*(1 + i) も機能しません。私の完全な実装は明らかに少し多すぎますが、その要点は次のとおりです。
上記は失敗します (632 行目はもちろん *(i + 2) 行です):
string.cpp: 関数 'int main()': string.cpp:632: エラー: '*exscape::string::iterator::operator+(int)(2)' 文字列の 'operator*' に一致しません。 cpp:105: 注: 候補は: char& exscape::string::iterator::operator*()
*(2 + i) は以下で失敗します:
string.cpp: 関数 'int main()' 内: string.cpp:632: エラー: '2 + i' の 'operator+' に一致しません string.cpp:434: 注: 候補は: exscape::string exscape: :operator+(const char*, const exscape::string&)
私の推測では、さらにオーバーロードを行う必要がありますが、どの演算子が欠けているのかわかりません。
c++ - 速度の違い:*thisを使用して大きなクラス内でファンクターVSoperator()を分離します
私はc++STLヒープアルゴリズムを使用しており、他のことを実行できるように、その周りにラッパークラスを作成しました。以下のコードを使おうとすると、たとえば次のようになります。
次のような別の関数オブジェクトを使用した場合よりも、wayyyyyの速度が遅くなりました。
なぜなのかわかりません。クラスに大量のデータがあるため、速度低下は*これによるものですか?それは奇妙に思えます。それとも、関数オブジェクトの使用方法と関係がありますか?
c++ - 比較のために関数オブジェクトを宣言しますか?
私は他の人の質問を見たことがありますが、私がここで達成しようとしていることに当てはまるものは見つかりませんでした。
std::sortとaを使用してEntityManagerクラスを介してエンティティを並べ替えようとしていますstd::vector<Entity *>
次のようなエラーが多数発生します
よくわかりませんが、ENTITY_VECTORはですstd::vector<Entity *>
。これが、compareByX関数オブジェクトを使用するときに問題になる可能性があるかどうかはわかりません。
私はC++にかなり慣れていないので、どんな種類の助けも歓迎します。
c++ - 複数の引数を持つC++[]配列演算子?
複数の引数を取る配列演算子をC++で定義できますか?私はこのようにそれを試しました:
しかし、私はこのエラーを受け取ります:
c++ - メモリをリークせずに operator+ を使用しますか?
したがって、問題のコードは次のとおりです。
もちろん、これは文字列をスタックに置き、削除されてガベージを返します。また、ヒープに配置すると、メモリリークが発生します。では、これをどのように行うべきですか?