社区
工具平台和程序库
帖子详情
在头文件中声明类时一定要实例化吗?
BobYoung
2008-01-20 04:21:53
我在VC2005工程的
头文件中,声明一个类数据成员
:CNiExcelWorksheet m_worksheet;(向EXCEL中添加工作页);
但编译时总是提示:error C2512: 没有合适的默认构造函数可用
在头文件中声明类时一定要实例化吗?
...全文
237
8
打赏
收藏
在头文件中声明类时一定要实例化吗?
我在VC2005工程的头文件中,声明一个类数据成员:CNiExcelWorksheet m_worksheet;(向EXCEL中添加工作页); 但编译时总是提示:error C2512: 没有合适的默认构造函数可用 在头文件中声明类时一定要实例化吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ni_in
2008-01-23
打赏
举报
回复
既然是厂商提供的,还是定义指针,用的时候根据他的构造函数创建出来吧,应该就可以用了。
大爷想要时光机
2008-01-22
打赏
举报
回复
或者给CNiExcelWorksheet类中构造函数加个默认参数
大爷想要时光机
2008-01-22
打赏
举报
回复
在初始化列表中用带参的构造函数
星羽
2008-01-22
打赏
举报
回复
CNiExcelWorksheet是控件关联的类,是厂商提供的,不是我自己定义的,我无法帮他定义构造函数啊。
CNiExcelWorksheet* m_pWorksheet;
在cpp里初始化的时候, m_pWorksheet = new CNiExcelWorksheet(xx,xx,...)
BobYoung
2008-01-22
打赏
举报
回复
CNiExcelWorksheet是控件关联的类,是厂商提供的,不是我自己定义的,我无法帮他定义构造函数啊。
jonah2008
2008-01-21
打赏
举报
回复
肯定定义了带参的构造函数吧
fangyingjf
2008-01-20
打赏
举报
回复
是的
加上
public:
CNiExcelWorksheet(){};
~CNiExcelWorksheet(){};
Icicly_qcmos
2008-01-20
打赏
举报
回复
不是实例化的问题,是CNiExcelWorksheet类没有无参构造函数,去查一下CNiExcelWorksheet的构造函数原型吧,或者干脆定义一个指针好了
C++编程实例100篇
C++编程实例100篇C++编程实例100篇C++编程实例100篇C++编程实例100篇
在CFileDialog
中
增加一对按纽
这个例子能够在CFileDialog
中
增加一对按纽,需要使用Visual C++ 6.
模版定义
一定
要写在
头文件
中
吗?
大家在使用C++代码时或多或少都会使用到模板,使用模板时应该都是把定义放在了
头文件
中
,因为放在源文件
中
定义会编译失败。 那问题来了,模板
中
的函数定义
一定
要写在
头文件
中
吗? 先说结论:不
一定
要放在
头文件
中
,定义也可以放在源文件
中
,但操作起来还是有点麻烦的。 继续往下看看 先看一段正常的模板代码: // template.h #include <iostream> template <typename T> struct TemplateTest { T value
C++模板类为何通常定义在
头文件
中
?如果将.h和.cpp分开,在编译的时候发生错误,因为模板类不是动态类
如果模板定义放在.h
头文件
中
,模板实现放在.cpp文件
中
,编译时可以看到模板的
声明
,但找不到定义,因此会成为外部符号,而在链接时,必然无法找到模板的实现(该外部符号的对应符号),导致链接失败。如果将模板的定义放在一个源文件
中
,而其他编译单元只有
声明
而没有定义,那么编译器在编译这些单元时将无法看到完整的模板定义,从而无法进行正确的
实例化
。如前所述,模板的
实例化
是在编译时进行的,因此,如果模板定义不在编译单元
中
可见,编译器就无法为其生成正确的代码。在模板编程
中
,有两种主要的
实例化
方式:显式
实例化
和隐式
实例化
。
解惑:如何在
头文件
中
声明
模板,并在源文件
中
定义模板?
C++
头文件
和源文件分离模板定义和
声明
的办法
工具平台和程序库
24,856
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章