标题可能看起来有点困惑,所以这里有一个更彻底的解释:
我有一个模板类,它有一个 vector 作为成员变量。模板参数是一个结构(或类),它将具有一个特定的变量。这个 vector 的类型应该从模板参数(从这个某个变量)派生出来。棘手的部分是它应该从模板参数的成员变量派生。
#include <vector>
#include <complex>
using namespace std;
struct thingA {
double variable;
//...
};
struct thingB {
complex<double> variable;
//...
};
template <class S>
class someClass {
vector< " type of S::variable " > history; // If S=thingA, make it a double, if S=tingB make it a complex<double>
}
// Usage:
someClass<thingA> myInstanceA; // (this instance should now have a vector<double>)
someClass<thingB> myInstanceB; // (this instance should now have a vector<complex<double>>)
最佳答案
您可以通过 decltype
获取类型, 如果数据成员的名称始终相同:
template <class S>
class someClass {
vector< decltype(S::variable) > history; // if S=thingA, make it a double, if S=tingB make it a complex<double>
};
关于c++ - 从模板成员类型派生模板化类的成员变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67366762/