2つのクラステンプレートAとB、および関数テンプレートf1()があります。このように:クラステンプレートの友人に関するいくつかの問題
template< class T >
class A{};
template< class T >
class B
{
friend class A<T>; /* Expression 1 */
friend void f1(B<T> &b); /* Expression 2 */
};
template< class T >
void f1(B<T> &b) {}
int main()
{
A<int> a;
B<int> b;
f1(b);
return 0;
}
問題1:式1引数T友人引数TとBの専門の しかし、どのように専門のすべての友人のすべての 専門を作ることでの専門を作りますBの?
問題2: f1をクラス定義の外に定義する方法は?
undefined reference to `f1(B<int>&)'
問題3:すべてのF1()S(誰が引数としてBのすべての専門を受け取ることができます)Bのすべての専門の 友達を作るためにどのようにこのような コードは、エラーを生成しますか?
「テンプレート友人Aクラス」と「テンプレート友人Aクラス」の違いは何ですか?わかりません。@David Rodriguez –
@UniMouS:あなたが編集を意味するなら、タイプミスを修正する(私は思う)。これは私がほとんど書いていないものの一つであり、その構文はそれほど単純ではありません。私がかなり前に書いたもう一つの答えを、私がコンパイラで検証し、 –
あなたの答えをありがとう、私はC++の初心者です。私はその構文をあまり理解していません。 @David Rodriguez –