問題タブ [class-template]
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++ - c++のクラステンプレート内のテンプレートクラス
ここのnoobはまだテンプレートを試しています。メッセージ処理クラステンプレートを作成しようとしています
すべてヘッダーファイルで定義されています。クラスを作成してテストしましたが、すべて順調です。今、私はこれをやろうとしています:
ただし、この行では、「>」トークンの前に式タイプが正しくないというエラーが表示されます。
MessageTypeとは何かを定義するために必要なヘッダーファイルを追加しました。私はこれまで何度もこの関数を使用しましたが、このコンテキストでは使用していません。
テンプレート関数が未定義のクラステンプレート(特殊化されていない?)内で完全に定義されている(特殊化されている?)という事実をコンパイラーが気に入らないのではないかと思います。テンプレートを「特殊化」するものを完全に理解しているわけではありません。ほとんどの説明は「完全」または「部分的」の概念に焦点を当てていますが、そもそもそれを専門にするものではありません。
より多くのコードを見たい場合はお詫びします。私は職場でインターネットにアクセスできず、そこでこれを行っているので、すべてを精神的な「スクラッチパッド」に入れて家に持ち帰る必要があります。
c++ - How to create a 2D array in C++ using this specific container
I'm trying to port a
int a[][]
from Java to C++. I'm using this class as a container ArrayRef for ints because it handles references, and the project uses it extensively. In the AbstractReader class I declared
const ArrayRef<int> START_END_PATTERN_;
const ArrayRef<int> MIDDLE_PATTERN_;
const ArrayRef<ArrayRef<int> > L_PATTERNS_;
const ArrayRef<ArrayRef<int> > L_AND_G_PATTERNS_;
and
Note the trailing underscore to differentiate the two variables.static int START_END_PATTERN[];
static int MIDDLE_PATTERN[];
static int L_PATTERNS[10][4];
static int L_AND_G_PATTERNS[20][4];
I'm not sure what to do in order to initialize the two-dimensional ArrayRef. What I'm posting here will segfault because those ArrayRefs are being allocated on the stack. Anybody have a clever way to do this?
The only way I've actually managed to get it to work is using a ArrayRef< Ref<ArrayRef<int> > >
by making ArrayRef inherit from Counted, which is basically a class that allows for Reference Counting in C++. But in order to access the elements I hen have to do something like *(foo[i])[j], which is slightly nastier than foo[i][j].
c++ - テンプレート クラス + 仮想関数 = 実装する必要がありますか?
このコード:
を呼び出さない限り、問題なく簡単にコンパイルできますa.DoSomething()
。
However, if I define DoSomething
as a virtual function, I will get a compile error saying that B
doesn't declare SomeFunction
. I can somewhat see why it happens (DoSomething should now have an entry in the vtable), but I can't help feeling that it's not really obligated. Plus it sucks.
Is there any way to overcome this?
EDIT 2: Okay. I hope this time it makes sence: Let's say I am doing intrusive ref count, so all entities must inherit from base class Object. How can I suuport primitive types too? I can define:
を使うことができます...しかし、どうPrimitive<int>
ですか?フロートには演算子がないため、問題のようです。しかし、実際にはそうではありません。これは、テンプレートの意図的な機能の 1 つです。Primitive<char>
Primitive<float>
%=
operator %=
Primitive<float>
何らかの理由で、operator %=
仮想と定義する場合。Primitive<float>
または、リンク エラーを回避するために dll から事前にエクスポートする場合operator %=
、Primitive<float>
. operator %=
inPrimitive<float>
の vtableにダミーの値を入力するだけであれば(例外が発生しますか?)、すべて問題ありませんでした。
templates - テンプレート(非メンバー)関数でテンプレートクラスのtypedefを使用する
以下はコンパイルに失敗します(とにかく、Linux上のgcc 4.2.1で):
問題はこの行にあります:
...そしてコンパイラはこの不満を言います:
foo.c:関数内'void templated()':
foo.c:22:エラー:予期される `; ' 「バー」の前</p>
通常、型が宣言されていないときにこれが表示されますが、私が知る限り、Foo <T> :: FooTypeはtemplated()内で完全に有効である必要があります。
c# - 新しいウィンドウとユーザー コントロール (WPF) の既定の Visual Studio テンプレートを変更します。
Visual Studio が特定の型の新しいクラスに入れるものをどこでカスタマイズできますか? UserControl
WPFのテンプレートに 1 行追加したいWindow
ので、作成時の新しいウィンドウのコードは次のようになります。
現在生成されているものの代わりに:
編集: DataContext="{Binding RelativeSource={RelativeSource Self}}"
XAML テンプレートに。
c++ - C++-クラステンプレート使用時のエラー
ファイルmain.cpp..で
ファイルpqueue.h..。
ファイルpqueue.cpp内
エラーC2061:構文エラー:識別子
'arcComp'
c++ - テンプレート型変数を初期化するにはどうすればよいですか?
どちらの方がよいですか?
編集:T
プリミティブ型です。
java - 基本的なJava/Androidクラステンプレート()
これは非常に基本的な質問であることは知っていますが、ここでもGoogleでも、答えを見つけるためにそれを表現する方法を見つけることができませんでした。
次のコードでは:
アダプタビュークラステンプレートの<'?>はどういう意味ですか?私の推測では、パラメーターは任意のタイプを保持するAdapterViewである可能性があることを意味しますが、コミュニティに質問するかどうかはわかりません。
ありがとう
c++ - テンプレート クラスと演算子のオーバーロード
以下のようにテンプレートクラスをオーバーロードするにはどうすればよいですか?
以下のようなエラーが発生します。
c++ - フレンド関数テンプレートのクラス内定義の場合の再定義エラーを回避するには?
次のコードを検討してください。
現在は正常にコンパイルされています ( ideone )。しかし、 の定義のコメントを外すB
と、次のエラー ( ideone )が発生します。
このエラーが発生する理由を知っています(まあ、知っていると思います)。
だから私の質問は:
フレンド関数テンプレートのクラス内定義の場合の再定義エラーを回避するには?
クラス内でプライマリ テンプレート(特殊化ではない)の定義を提供する限り、このエラーが発生します。この方法でプライマリ テンプレートを定義することには、別の問題もあります。クラス テンプレートのすべてのインスタンス化のf
関数テンプレートfriend
のすべてのインスタンス化をBase
行うことです。これも避けたいと思います。ifとare not sameのf<T>
友達になりたいのですBase<T>
が、友達ではありません。同時に、クラス内での定義も提供したいと考えています。出来ますか?f<U>
Base<T>
U
T