mountlin 2005年01月23日
关于宏定义的一个问题
#define M(x) x::f()
如果我这样用M(C<T1,T2>),编译不通过,告诉我M接受的参数多了,C<T1,T2>被当成了两个参数。而如果用M((C<T1,T2>)),编译又会告诉我C<T1,T2>是抽象类,不能实例化。C<T1,T2>的确是抽象类,但我是在C<T1,T2>的派生类中用的M宏,如果直接写C<T1,T2>::f()是没问题的,是因为(<T1,T2>):f()多了()造成了别的含义?
不知道有没有说清。请问各位大虾,这个问题该怎样解决?
...全文
85 点赞 收藏 7
写回复
7 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告