小编Abo*_*y13的帖子

是否有一个函数可以调用 template<> 中的类名而无需自己键入类名?

我正在尝试获取类的类型名称。当然,我可以只使用typename(class),但我需要将它放在这样的模板中

ClassA<typeid(class).name()> a = ClassA<typeid(class).name()>(args);
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

template<class T>
class A
{
public:
   T t; // the class

   A(T t1)
   {
      t = t1;
   }
};

class B // example class
{
public:
   int i;

   B(int i1)
   {
      i = i1;
   }
};

int main()
{
   B b = B(1);
   A<typeid(b).name()>(b) a = A<typeid(b).name()>(b); // my issue
}
Run Code Online (Sandbox Code Playgroud)

但它总是给我一个错误。

'A': invalid template argument for 'T', type expected.
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题(类A需要能够接受一个属性中的任何类)?

c++ templates class-template c++11 template-argument-deduction

2
推荐指数
1
解决办法
126
查看次数