大家好
想问大家,如果我有这样的伪代码:
// 基类
classA {
}
template <typename T>
derived classB: A {
}
template <typename T>
derived classD: A {
}
class C {
public:
auto create_members() ->int {}
auto get_member(int id) -> *A {}
auto do_something(int id1,int id2)-> void{}
private:
std::vector<std::unique_ptr<classA>> members;
}
已知在main function里面,我们定义了:
auto b = new classB();
auto c = new classD<std::tuple<int, double>>();
然后,比如在这个classC::do_something的函数中,
A* a1 = get_number(id1)
A* a2 = get_number(id2)
我的问题是:有没有什么办法能知道在main function中定义的b的type是什么?比如auto b = new classB(),我想在classC中得到这个type是int。。然后c的type是std::tuple<int, double>...然后再比较b的type是否存在与c这个tuple的type里面。。。
因为在classC中不会知道用户在主函数中定义了什么classB<>,它可以是classB,classB或者classB<std::tuple<int, double>>,我真的很懵逼
谢谢大家