ここのnoobはまだテンプレートを試しています。メッセージ処理クラステンプレートを作成しようとしています
template <typename T> class MessageProcessor {
//constructor, destructor defined
//Code using t_ and other functions
foo( void ) {
//More code in a perfectly fine method
}
private: T *t_
};
すべてヘッダーファイルで定義されています。クラスを作成してテストしましたが、すべて順調です。今、私はこれをやろうとしています:
template <typename T> class MessageProcesor {
//Same stuff as before
foo(void) {
//Same code as before in foo, but one new line:
t_->getMessageSender<MessageType>();
}
private: T *t_;
};
ただし、この行では、「>」トークンの前に式タイプが正しくないというエラーが表示されます。
MessageTypeとは何かを定義するために必要なヘッダーファイルを追加しました。私はこれまで何度もこの関数を使用しましたが、このコンテキストでは使用していません。
テンプレート関数が未定義のクラステンプレート(特殊化されていない?)内で完全に定義されている(特殊化されている?)という事実をコンパイラーが気に入らないのではないかと思います。テンプレートを「特殊化」するものを完全に理解しているわけではありません。ほとんどの説明は「完全」または「部分的」の概念に焦点を当てていますが、そもそもそれを専門にするものではありません。
より多くのコードを見たい場合はお詫びします。私は職場でインターネットにアクセスできず、そこでこれを行っているので、すべてを精神的な「スクラッチパッド」に入れて家に持ち帰る必要があります。