C++,获取数据成员值【设计不当】

C++, get data member value [inappropriate design]

有class一个

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 ?
}

由于数据模型不合适,一些"hack"是必要的:-)。

int main()
{
   A<double > a;
   a.run();
}

class 成员 运行() 以参数 a1 调用函数 process1()。有什么合理的方法,如何在 process1() 函数调用后(例如友元函数、全局变量等...)在 process1() 函数中获取 a2 值?请记住函数签名

void process1(T a1)

需要保留...

感谢您的帮助。

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

尝试基于 process2 创建一个包含 a2.

的 lambda

然后那个 lambda 有一个带有一个 A 的签名,但是用两个 A 运行 process2:一个是你传递给它的,另一个是它携带的拉姆达。