有A类
template <typename T>
class A
{
private: T a1, a2;
public:
A() : a1(0.0), a2(0.0) {}
A(T a1_, T a2_) : a1(a1_), a2(a2_) {}
void run()
{
process2(a1, a2); // pass both data members
process1(a1); //pass only a1
}
};
template <typename T>
void process2(T a1, T a2)
{
//both a1, a2 are available
}
template <typename T>
void process1(T a1)
{
//only a1 is available
//How to get a2 ?
}
由于数据模型不合适,有些&#34; hack&#34;是必要的: - )。
int main()
{
A<double > a;
a.run();
}
类成员run()使用参数a1调用函数process1()。有没有合理的方法,如何在调用之后获取process1()函数中的a2值(例如友元函数,全局变量等)?请记住功能签名
void process1(T a1)
需要保留......
感谢您的帮助。
答案 0 :(得分:0)
我不确定如何在C ++中执行此操作,但我知道您可以在C ++ 11中执行此操作。
尝试创建基于process2
的lambda,其中包含a2
。
那个lambda有一个签名,需要一个A
,但运行process2
有两个A
s:一个是你传递给它的,另一个是什么&#39; s由lambda携带。