問題タブ [template-classes]
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++ - 不正な呼び出しによるリンク エラー
上記のコードを "main.cpp" に記述し、そのコードのヘッダー ファイルを作成しました。これを以下に記述します。
しかし、次のエラー メッセージが表示されました。
C2352: 'class::function': 非静的メンバー関数の不正な呼び出しです。
どうしたの?
c++ - restrict-pointer-type テンプレート引数と、テンプレート化された基本クラスの仮想メソッドのオーバーライド
以下は、コンパイルしてリンクする必要があると思いますが、そうではありません。
コンパイラ出力:
両方の場所で修飾子を削除する__restrict__
と、コンパイルとリンクが行われます。私は何を間違っていますか?
ノート:
- これは、restrict 修飾子とテンプレートの両方に関する SO (執筆時点) に関する唯一の質問です。おかしいですね。
- でGCC 4.9.3を使用してい
--std=c++11
ます。
c++ - テンプレート クラスのあいまいな多重継承
次の例に要約できる実際の状況があります。
B
がであるTimeListener
ことをコンパイラが認識できないのはなぜNotifier< TimeListener >::add_listener( TimeListener& )
ですか。
c++ - クラスのC ++ストアファンクター
次の Event クラスを作成しました。
Event.h
イベント.cpp
今、私は次のコードでそれをテストし、動作します:
しかし、最後に、次のようなファンクターで使用したいと思います。
しかし、Event.h ファイルでエラーが発生します。
c++ - テンプレートクラスのc++ Callメソッド
テンプレートクラスを作成して初期化しました。このクラスからメソッドを呼び出したいのですが、コンパイラ エラーが発生します。
(関数を使用TemporaryFunctionForSimulator
して、テンプレート クラスを *.h と *.cpp に分割することに成功しました。これは問題ではありません!)
エラー: 'simulator' のメンバー 'addEvent' の要求は、非クラス型 'Simulator*()' です</p>
Simulator.h
シミュレータ.cpp
main.cpp
c++ - C++ テンプレート クラス メンバーの特殊化と継承
次のような一連のクラスを書き留めたいと思います。
- あらゆる種類のオブジェクトとそのリレート ゲッターをラップする純粋な仮想クラス。
- 必要なオブジェクトの種類ごとに 1 つまたは複数のクラスを作成し、仮想オブジェクトを拡張して getter をオーバーライドして特殊化します。
ラッパーのテンプレート クラス ソリューションはこのケースに適しているようですが、次の 2 つの異なるコンテキストで使用する必要があります。
- 最初のものはラッパーの実装を認識していません。この場合、 ( Javaのように) 任意のクラス名を表す
Wrapper<AnyObj> var;
withを宣言する必要があります。私の知る限り、これは C++ では実行できません。AnyObj
?
- 2 つ目は、特定のラッパー実装に制限されています。この場合、(ダウンキャストするのではなく) ラップされたオブジェクトを正確な型で返すゲッターが必要です。
私が正しければ、テンプレート クラスを使用できません。さらに、ラッパーにはprotected: T* wrappedObject
メンバーがありません。
Java のアプローチにとらわれているのか、最初から間違った考えを持っているのか、それとも何かが欠けているのかはわかりません。
どんな提案でも大歓迎です。
c++ - テンプレート クラスを動的にキャストする方法
次のクラス テンプレートの周りに API を記述しようとしています。
この API の一部として、実装者が異なるタイプのMyClass
. これを達成するために、次の関数を作成しました。
このコードはエラーなしでコンパイルされました。
私の質問:上記の関数の特定の実装に対してとの
両方が定義されていると仮定すると、このクレイジーな外観の関数は、実装者が, (経由)のタイプ間で動的にキャストできるようにするのに十分でしょうか、それとも完全に失われましたか?C operator C (A)
D operator D (B)
MyClass
(MyClass<C, D>)MyClass<A, B>
実装例: