访问c ++中的模板变量方法

时间:2016-01-26 19:19:50

标签: c++ class templates

我有一个模板说A:

template <class T>
class A {
 int key;
 T value;
}

和B级:

class B {
public:
string name;
double num;
 someMethod();
};

我创建了一个模板初始化为A<B> something;,我的问题是,如何使用B访问something中的变量和方法。

2 个答案:

答案 0 :(得分:4)

您不能,因为value不是public

如果您使用public,则可以something.value.fieldnamesomething.value.methodname()访问它。

或者,如果要隐藏实现,可以向A添加一个公共方法,以便能够访问它们,然后调用该方法。

答案 1 :(得分:2)

  

如何使用B

访问something中的变量和方法

通过value A成员变量或提供访问者功能,提供对valuepublic的访问权限。

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();