如何从模板 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 中声明为私有成员的结构。有可能吗?
限制:
- 禁止创建全局结构,A 和 B 均可访问 classes.
- 禁止在 class B.
中创建任何 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;
};
有以下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 中声明为私有成员的结构。有可能吗?
限制:
- 禁止创建全局结构,A 和 B 均可访问 classes.
- 禁止在 class B. 中创建任何 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;
};