C ++,获取数据成员值[不合适的设计]

时间:2015-02-03 18:14:36

标签: c++ function templates

有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)

需要保留......

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不确定如何在C ++中执行此操作,但我知道您可以在C ++ 11中执行此操作。

尝试创建基于process2的lambda,其中包含a2

那个lambda有一个签名,需要一个A,但运行process2有两个A s:一个是你传递给它的,另一个是什么&#39; s由lambda携带。