問題タブ [template-function]
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++ - 関数テンプレートを別の関数に渡すときの過負荷解決
私は次のコードを持っています:
の過負荷解決はfoo
、を渡すときに正しく機能しbaz
ます。ただし、関数テンプレートを渡す場合、スコープにテンプレート引数が1つしかない場合でも、コンパイラはのテンプレート引数をbar
推測できず、最初の引数は完全にに解決されます。のような呼び出しをコンパイラで解決できるように関数テンプレートを作成するにはどうすればよいですか?T0
foo
bar
int
foo
foo(bar, 10)
c++ - 次のテンプレート関数の意味は?
上記のコードをレガシーコードで見ましたが、その意味がわかりません。これは、通常の特殊化されていない関数定義でも、完全に特殊化された関数定義でもありません。
何か案が?
c++ - そのテンプレート関数がコンパイルされないのはなぜですか?
これは非常に短いスニペットで、g++ 4.7.1 ではコンパイルされません (ちなみに gcc 4.6.3 でもコンパイルされません)。
そして、これが gcc 4.7.1 の出力です (4.6.3 はほぼ同じことを言っています)。
/tmp/ccNWJW6X.o: 関数
main': main.cpp:(.text+0x15): undefined reference to
内 std::basic_ostream >& operator<< (Foo&, char const (&) [4])' collect2: ld が 1 つの終了ステータスを返しました
誰でも理由を説明できますか?
編集
私もclang 3.1で試しましたが、まったく同じことが言えます。
c++ - テンプレートでタイプのデストラクタを呼び出す方法は?
たとえば、次のような関数があります。
andのようなコンストラクタとデストラクタを呼び出すことはできません(今は真実ではありません)(Whyy?= C)object.Type()
object.~Type()
コンストラクターを呼び出すには、が好きnew(&object) TYPE()
です。そして、デストラクタを呼び出す方法がわかりません(配置は存在しませんdelete
)。これを行う方法?
c++ - 存在しないメンバーを使用しているにもかかわらず、プログラムをコンパイルする
このプログラムは (残りのプログラムと共に) コンパイルされますが、2 行のnode *toFollow = l->yhjfrtydfg;
とnode *whatever = l.asfqwejfq3fqh23f8hq23r1h23017823r087q1hef;
は明らかにクレイジーな入力です。他のエラーがキャッチされるので、それは奇妙です。何か助けはありますか?
c++ - 自分の出力ストリームクラスが機能しないのはなぜですか?
VC++2012コンパイラは次のように文句を言います。
エラーC2676:バイナリ'<<':'OutputStream'は、この演算子または事前定義された演算子に受け入れられる型への変換を定義していません
c++ - 関数宣言でのテンプレートキーワードの意味
「関数宣言でのテンプレートキーワードの使用」とはどういう意味ですか?
この例では、コンパイラエラーでエラーが発生します:「func」はテンプレート関数ではありません。
しかし、以下の例は問題ありません。
上記の場合の「テンプレート」の意味は何ですか?この関数がテンプレート関数であることを示しているだけですか?
c++ - テンプレート クラスのネストされた型をテンプレート パラメーターとして使用する
テンプレート クラスのネストされた型を使用してテンプレート関数を実装したいと考えています。
ここで、非メンバーおよび非フレンド関数として実装する方が良いことを読みました。operator <<
したがって、関数toStream()
とtableToStream()
外部を移動することにしましたMyClass
:
非メンバーおよび非フレンド関数に変換MyClass::toStream()
するのは簡単です。operator <<
operator <<
しかし、私は呼び出す代わりに単独で使用したいMyClass::tableToStream()
:
関数についてはMyClass::tableToStream()
、次の実装を使用できますが、関数が一般的すぎるため、ストリーム出力が混乱する可能性があります (任意の型を にすることができますTABLE
)。
したがって、ネストされた型に制限したいと思いMyClass
ます。MyClass::tableToStream()
以下は、標準operator <<
の非メンバーおよび非フレンド関数に変換する私の試みの1つです。
しかし、エラーは約typename MyClass<T>::TABLE
です。
c++ - テンプレート関数呼び出しによる C++ の未解決の extern シンボル
関数を呼び出さない限り、すべて問題ありませんが、関数を呼び出すと、未解決の外部シンボルが取得されます。私のクラスはすべて SSE 名前空間 (私自身) にあり、今まで正常に動作していました。私に見せてください。
ここで関数を呼び出します。Game は、私にとって舞台裏の作業を実行するクラスです (そのクラスではすべて問題ありません)。Game.Objects() は、オブジェクトの作成と削除、およびオブジェクトへのコンポーネントの提供を担当するゲームの ObjectManager を返します。ObjectCreate は、作成された新しいオブジェクトへのポインターを返すテンプレート関数です。
ObjectManager の .cpp ファイルから:
これにより、新しいゲームオブジェクトに一意の名前が割り当てられ、メモリに作成され、ベクターに格納されます。言及すべきもう1つのことは、これと同様のObjectManagerおよびGameObject関数の多くでこの未解決の外部シンボルエラーが発生していることですが、コードでそれらを呼び出す場合にのみ同じです.
参考までに、エラーは次のとおりです: Error 2 error LNK2019: unresolved external symbol "public: class SSE::GameObject * __thiscall SSE::ObjectManager::ObjectCreate(void)" (??$ObjectCreate@VGameObject@SSE@@@ObjectManager @SSE@@QAEPAVGameObject@1@XZ) 関数 _SDL_main で参照 C:\SDL\SimpleStateEngine\SSE\main.obj SSE
他に何か必要なことがあれば教えてください。何時間も探しています。
c++ - テンプレート化されたメンバー関数は、どのタイプの引数も受け入れませんか?
私は次のクラスを持っています:
ただし、AddParameter を使用しようとすると、関数のオーバーロードが引数リストに一致しないと表示されます。あらゆる種類の可能な組み合わせを試しました。たとえば:
だから私はこのようにそれを使用します:
そして、これは機能しません.Intellisenseは、それが引数リストと一致しないことを教えてくれます.興味のある方は、AddParameter が行うことは、typeValue の値を取得し、パラメーター システム内のマップ内の void ポインターに設定し、その値のマップ キーをパラメーターの ID と同期し、パラメーターにもハンドルがあることです。それは親パラメーターシステムなので、IDとタイプチェック+タイプキャストから、IDに応答するシステムのパラメーター値を常に取得できますが、それは私が思う質問には関係ありません...)