A と B の 2 つのテンプレート クラスがあるとします。B を A のフレンドにしたい場合は、どうすればよいでしょうか?
class<template T>
class A
{
public:
friend class B<T>; // ???
};
class<template T>
class B
{
};
シンボルを使用するには、宣言または定義する必要があります。これはテンプレートでも同じです。template を宣言する必要がありますB
。また、テンプレート クラスを宣言するための syntax( class<template T>
) は有効ではありませんtemplate <class T>
。
これはうまくいくはずです:
template <typename T> // typename can be replaced with class
class B;
template <typename T>
class A
{
public:
friend class B<T>;
};
template <typename T>
class B
{
};