C++中如何将一个模板类型当作参数传到宏中,然后在转化为字符串呢?

C、C++和Java语言
回复
头像
DoraZZ
帖子: 4031
注册时间: 2009-12-16 17:47
系统: Matrix
来自: 火星学院
送出感谢: 6 次
接收感谢: 2 次

C++中如何将一个模板类型当作参数传到宏中,然后在转化为字符串呢?

#1

帖子 DoraZZ » 2015-02-11 21:10

我在做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>
请问如何解决?
ฏ้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎้้้้้้้้้้้้้้้้้้้้้้้้้้้้๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎้้้้้้้้้้้้้้้้
我和助手万年不更新的个人首页: https://tuxzz.org
x724172556
帖子: 4
注册时间: 2016-08-30 17:46
系统: ubuntu16
送出感谢: 0
接收感谢: 0

Re: C++中如何将一个模板类型当作参数传到宏中,然后在转化为字符串呢?

#2

帖子 x724172556 » 2016-08-30 17:52

说的不清不楚,是把一个对象中的内容转为字符串?
justko
帖子: 3
注册时间: 2015-07-11 14:48
系统: ubuntu 14.04
送出感谢: 0
接收感谢: 0

Re: C++中如何将一个模板类型当作参数传到宏中,然后在转化为字符串呢?

#3

帖子 justko » 2017-09-01 18:48

后面你说的是变成

代码: 全选

std::cout<<Q_ARG(make_template(std::pair,double,double),std::make_pair(1.0, 1.0)).name()<<std::endl;
吧,好像#后面的就不会换咯,宏里面的逗号怎么着 :Hehe
回复

回到 “C/C++/Java”