如何从模板 class A 访问在 C++ 模板 B class 中声明为私有字段的结构?

How do I access from template class A a struct declared as private field in template B class in c++?

有以下c++原始代码:

template<typename T>
class A {
 private:
  // here I want to access B::SomeStruct to create SomeStruct field in class A
};

template<typename T>
class B {
 private:
  template<typename Tp>
  friend class A;

  struct SomeStruct {
    void some_field;
  };
};

在 class A 中,我想创建一个类型为 SomeStruct 的字段 - 在 class B 中声明为私有成员的结构。有可能吗?

限制:

  1. 禁止创建全局结构,A 和 B 均可访问 classes.
  2. 禁止在 class B.
  3. 中创建任何 public 字段

这是一种方式。所有 B:s 都成为所有 A:s 的朋友,并且 A<T> 有一个 B<T>::SomeStruct 成员:

template<typename T>
class B {
private:
    template<typename Tp>
    friend class A;

    struct SomeStruct {};
};

template<typename T>
class A {
private:
    // 'typename' prior to dependent type name 'B<T>::SomeStruct':
    typename B<T>::SomeStruct ss;
};