我有一个模板说A:
template <class T>
class A {
int key;
T value;
}
和B级:
class B {
public:
string name;
double num;
someMethod();
};
我创建了一个模板初始化为A<B> something;
,我的问题是,如何使用B
访问something
中的变量和方法。
答案 0 :(得分:4)
您不能,因为value
不是public
。
如果您使用public
,则可以something.value.fieldname
和something.value.methodname()
访问它。
或者,如果要隐藏实现,可以向A
添加一个公共方法,以便能够访问它们,然后调用该方法。
答案 1 :(得分:2)
如何使用
访问B
something
中的变量和方法
通过value
A
成员变量或提供访问者功能,提供对value
中public
的访问权限。
让value
成为public
成员
template <class T>
class A {
public:
int key;
T value;
}
然后将其用作:
something.value.someMethod();
使用value
成员函数
public
的访问权限
template <class T>
class A {
int key;
T value;
public:
T& getValue() { return value; }
T const& getValue() const { return value; }
}
然后将其用作:
something.getValue().someMethod();