問題タブ [conversion-operator]

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 に答える
2073 参照

c++ - 変換演算子の種類によって例外をキャッチできますか?

短い件名で質問をうまく表現する方法がわからないので、もっと長い説明を試してみましょう。次の例外クラスがあるとします。

次に、これを実行して、キャッチブロックをトリガーすることはできますか?

残念ながらそうはならないと思いますが、ネットやSOで情報が見つからなかったので、聞いてみようと思いました。そして、はい、私は自分のコンパイラでプログラムを実行して何が起こるかを見ることができることを理解していますが、それは標準がこの動作について何を言っているのか、私のコンパイラが実装しているのかを教えてくれません(そして私はそれを信頼していません)。

0 投票する
5 に答える
10327 参照

c++ - C++でのConst演算子のオーバーロードの問題

constバージョンでoperator()をオーバーロードするのに問題があります:

これにより、次の出力が得られます。

  • NONconst-versionが呼び出されました---NONconst-versionが呼び出されました-A(1,1)= 8.8
  • NONconst-バージョンが呼び出されました-エラー:マトリックスの最初の行のみを変更できます。

C ++がoperator()のconst-versionを呼び出すようにするにはどうすればよいですか?GCC4.4.0を使用しています。

0 投票する
6 に答える
255 参照

c++ - A*をB*に自動的に変換する

クラスが与えられたとしましょうABそれへのポインタを小さなクラス、ある種のスマートポインタにラップしたいのですが、aB*が自動的にに変換されるという制約があるA*ため、すでにを使用しているコードを書き直す必要はありませんA*

したがってB、次のようにコンパイルするように変更したいと思います...

Bから継承することAはオプションではないことに注意してください(のインスタンスAは私の制御できない工場で作成されます)...

出来ますか?

ありがとう。

0 投票する
2 に答える
3047 参照

c++ - タイプ 'float' への無効なキャスト

クラスに問題があります。クラスの比較演算子を作成します。
いくつかのコード:

クラス宣言:

問題は、次の行の operator < function でコンパイル エラーが発生したことです。

正しくは一部: (float) その他

エラーメッセージは次のとおりです。

問題の原因は何ですか?

0 投票する
5 に答える
48725 参照

c++ - 「演算子 int」関数とは何ですか?

以下の「operator int」関数とは何ですか? それは何をするためのものか?

0 投票する
5 に答える
7274 参照

c++ - C++ での型変換/キャストの混乱

型変換とは何ですか?型キャストとは何ですか?

それぞれをいつ使用する必要がありますか?

詳細: これが明白な質問である場合は申し訳ありません。Ruby のバックグラウンドから来て、などに慣れている C++ はto_s初めてto_iです。

0 投票する
8 に答える
128349 参照

c++ - 「operatorbool()const」の意味は何ですか

例えば:

colintです。どのように機能しoperator bool() constますか?

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

c++ - contsructor型変換と変換演算子を使用した一連の変換

標準の変換は、変換演算子またはコンストラクター型変換によって実装される変換の前または後にできることを読みました。一方、2つの変換演算子
のシーケンスは許可されていません2つのコンストラクター型変換のシーケンスは許可されていません

私はこれをテストするために着手し、異なる結果を得ました。MSVC2010を使用しています

最初のバンチコードでは、これは失敗します。int b1 = sMe; これは、2つの変換演算子のシーケンスを意味するので素晴らしいです:1つはmyStringからmyTypeに、もう1つはmyTypeからintに

2番目のバンチコードでは、これは失敗しません。myString sYou(b); これは、2つのコンストラクター変換のシーケンスを意味すると思いますが、1つはintからmyTypeに、もう1つはmyTypeからmyStringに変換します。

誰かが私に何が欠けているのか説明してもらえますか?

どうもありがとう、

ファーストバンチ

セカンドバンチ

0 投票する
6 に答える
8612 参照

c++ - 関数ポインタに変換するためのC++変換演算子

私は頭の中で十分に単純なアイデアに頭を悩ませていますが、C++で実装する方法がわかりません。

通常、次の簡単な例のように、変換演算子を使用してクラスを宣言できます。

だから今、私は次のような素晴らしいものを書くことができます

しかし、私の特定のケースでは、オブジェクトを関数ポインターに変換するための演算子を提供したいと思います(たとえば、Barインスタンスをint(*)(int, int)関数ポインターに変換する)。これが私が最初に試したことです:

しかし、演算子関数はコンパイルに失敗し、次のエラーが生成されます。

リターンタイプを括弧で囲むなど、上記の簡単なバリエーションも試しましたが、これらのアイデアもすべて失敗しました。

関数ポインターへの変換演算子メソッドを宣言するための構文が何であるか、またはそれが可能であるかどうかを誰かが知っていますか?

注:GCC4.5.2を使用してCode::Blocksでこれをコンパイルしています。新しいC++0xの概念のいくつかに関する回答も歓迎します。

編集

例を単純化するための努力の中で、私は意図せずに1つの詳細を省略しました。少し奇妙ですが、厳密にポインタを返すのではなくint(*)(int,int)、変換演算子はテンプレート化することを目的としています。

私の知る限り、そのような型をtypedefすることはできなくなりました。これは明らかに物事をはるかに不器用にしますが、まだ方法があることを願っています。

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

c++ - C++ 変換 const 参照渡し

テンプレートの参照渡し変換/型キャスト演算子 (const なし) を指定すると、次のことが可能になります。

そして、次のコードが与えられます(const付き):

次のエラーが発生します。

エラー: 代入で 'TestA' を 'int' に
変換できません エラー: 代入で 'TestA' を 'float' に変換できません

質問

変換/型キャスト演算子がテンプレート型の const 参照渡しを返すようにするにはどうすればよいですか?

環境

ほとんどの人が入ってきて、「何にも変換できない」とびっくりする前に、コンテキストが必要です。上記のコードは疑似コードです。テンプレート化された変換関数の落とし穴ではなく、可能な const 参照の戻りにのみ関心があります。しかし、それが何のためにあるのか疑問に思っているなら、それは比較的単純です:

TemplateClass -> 変換 (バイトデータに変換) -> ファイル
TemplateClass ← 変換 (バイトデータから元に戻す) ← ファイル

ユーザーは、何を取得しているのかを知っているか、自動化されていることが期待されます (IE の保存/読み込み状態)。はい、ポインタを使用して任意の型をバイトデータに変換するテンプレートの普遍的な方法があります。

そして、この種のことをすでに行っているstdについて私に拍手を与えないでください。変換プロセスは、より複雑なクラス ライブラリのセットアップの一部です。

私はプログラマーです。私を信じて。C++ は私を信頼し、間違いを許してくれます。私が学ぶ唯一の方法。