社区
C++ 语言
帖子详情
关于宏定义的一个问题
mountlin
2005-01-23 02:33:05
#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()多了()造成了别的含义?
不知道有没有说清。请问各位大虾,这个问题该怎样解决?
...全文
154
7
打赏
收藏
关于宏定义的一个问题
#define M(x) x::f() 如果我这样用M(C),编译不通过,告诉我M接受的参数多了,C被当成了两个参数。而如果用M((C)),编译又会告诉我C是抽象类,不能实例化。C的确是抽象类,但我是在C的派生类中用的M宏,如果直接写C::f()是没问题的,是因为():f()多了()造成了别的含义? 不知道有没有说清。请问各位大虾,这个问题该怎样解决?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sunwt
2005-01-23
打赏
举报
回复
typedef即可
playmud
2005-01-23
打赏
举报
回复
#include <iostream>
#define M( x ) x::f()
using namespace std;
template<typename T,typename T2>
class B1
{
public:
int m_dwRef;
int f(){cout<<"hello world"<<endl;};
};
int main()
{
B1<int,char> a;
typedef B1<int,char > ss;
M( a.ss );
system("pause");
}
搞定了,呵呵。
playmud
2005-01-23
打赏
举报
回复
偶理解错了。
playmud
2005-01-23
打赏
举报
回复
#include <iostream>
#define M(x) x::f()
using namespace std;
template<typename T>
class B1
{
public:
int m_dwRef;
int f(){cout<<"hello world"<<endl;};
};
int main()
{
B1<int> a;
M(a.B1<int>);
system("pause");
}
看来不应该不是写法的问题。
useresu
2005-01-23
打赏
举报
回复
想了一下,感觉是宏定义不支持这样定义吧,
直接写C<T1,T2>::f()当然是没问题的。
useresu
2005-01-23
打赏
举报
回复
不太明白,为了类型的安全性,宏这东西能少用,就少用,难道模板解决不了问题吗?
idler
2005-01-23
打赏
举报
回复
mark&up
基于springboot+vue+mysql电商平台的设计与实现(源码+论文+开题报告).rar
采用前后端分离架构,包含数据库文件,代码经过完整测试,保证可以运行,内部包含详细的运行说明文档,如遇运行
问题
可私信博主。 本项目主要面向计算机相关专业中正在筹备大作业、毕业设计的学生,以及渴望通过实战项目提升编码能力的自学者,系统难度设计贴合教学需求,功能模块覆盖全栈开发核心知识点,所有代码与文档均经测试审核,学习者可放心下载参考或直接用于课程实践。
基于JavaEE JSF XML 导航规则配置源码.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目
问题
、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、本项目仅用作交流学习参考,请切勿用于商业用途。
实验一图像文件的读取项目文件+报告
实验一图像文件的读取项目文件+报告
Android自定义Button控件实现不同背景图片设置方法
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在Android开发中,为了满足特定的设计需求或功能扩展,我们常常需要对系统控件进行自定义。本文将介绍如何自定义
一个
Button控件,并为其设置不同的背景图片,涉及自定义控件的基本原理和布局管理。 首先,创建
一个
继承自Button的自定义类MyButton。通过继承,我们可以保留Button原有的功能,并在此基础上添加自定义特性。在MyButton类中,重写构造函数以正确处理属性初始化,并添加成员变量存储文本、位置信息和背景图片ID。 为了实现背景图片切换,添加onSetText和onSetBmp方法。onSetText用于设置按钮文本及其位置和样式,onSetBmp用于设置按钮按下和松开状态的背景图片ID。 接着,重写onDraw方法以显示自定义文本,并重写onTouchEvent方法,在用户按下或松开按钮时切换背景图片。
苹果系统启动文件boot.efi解析
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 原版 macOS 系统文件中的 BOOT.EFI 是用于启动 macOS 的关键文件,它是由苹果公司开发的,用于确保系统能够正确引导和启动。这个文件是 macOS 系统的核心组件之一,它在启动过程中起到至关重要的作用。
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章