0

申し訳ありませんが、この質問は何度も聞かれているようですが、私のセットアップで機能する他の回答を得ることができませんでした. 次のクラスと関数のセットアップがあります。

namespace ddd {
  template <typename T>
  class A {
    ...
  };

  template <typename T, typename U>
  A<T> a_func(const A<U> &a) {
    ...
  }
}

a_func を A のフレンドとして宣言したいのですが、T と U に使用される型名に関係なく、a_func が A のすべてのインスタンスのフレンドになるようにします (たとえば、a_func は A にアクセスできます)。

ありがとう!

4

1 に答える 1

1

この方法でそれを行うことができます(これはあなたが持っていた方法のように見えます):

template<typename X>
class A {
    template<typename T, typename U>
    friend A<T> a_func(const A<U>& a);
};

template<typename T, typename U>
A<T> a_func(const A<U>& a) {
    // whatever
}

デモ

于 2012-05-18T23:49:34.477 に答える