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
:一个是你传递给它的,另一个是它携带的拉姆达。
有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 有一个带有一个 A
的签名,但是用两个 A
运行 process2
:一个是你传递给它的,另一个是它携带的拉姆达。