我在做Qt编程中,遇到了一个问题,现有一个宏
#define Q_ARG(type, val) QArgument<type>(#type, val)
然后使用这个宏,Q_ARG展开出的QArgument的name成员可以返回type的字符串
std::cout<<Q_ARG(std::pair<double, double>, std::make_pair(1.0, 1.0)).name()<<std::endl;
编译不通过,说提供的模板参数过多
然后我使用一个宏来避免编译器误识别模板参数中的逗号
#define make_template(t, ...) t<__VA_ARGS__>
然后测试语句替换为
std::cout<<Q_ARG(std::pair<double, double>, std::make_pair(1.0, 1.0)).name()<<std::endl;
编译通过,但是这时会发现输出的结果是make_template(std::pair, double, double),而不是想要的std::pair<double, double>
请问如何解决?
C++中如何将一个模板类型当作参数传到宏中,然后在转化为字符串呢?
- DoraZZ
- 帖子: 4042
- 注册时间: 2009-12-16 17:47
- 系统: Matrix
- 来自: 火星学院
C++中如何将一个模板类型当作参数传到宏中,然后在转化为字符串呢?
ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎้้้้้้้้้้้้้้้้้้้้้้้้้้้้๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎้้้้้้้้้้้้้้้้
我和助手万年不更新的个人首页: https://tuxzz.org
我和助手万年不更新的个人首页: https://tuxzz.org
-
- 帖子: 4
- 注册时间: 2016-08-30 17:46
- 系统: ubuntu16
Re: C++中如何将一个模板类型当作参数传到宏中,然后在转化为字符串呢?
说的不清不楚,是把一个对象中的内容转为字符串?
-
- 帖子: 3
- 注册时间: 2015-07-11 14:48
- 系统: ubuntu 14.04
Re: C++中如何将一个模板类型当作参数传到宏中,然后在转化为字符串呢?
后面你说的是变成吧,好像#后面的就不会换咯,宏里面的逗号怎么着
代码: 全选
std::cout<<Q_ARG(make_template(std::pair,double,double),std::make_pair(1.0, 1.0)).name()<<std::endl;