社区
工具平台和程序库
帖子详情
在头文件中声明类时一定要实例化吗?
BobYoung
2008-01-20 04:21:53
我在VC2005工程的
头文件中,声明一个类数据成员
:CNiExcelWorksheet m_worksheet;(向EXCEL中添加工作页);
但编译时总是提示:error C2512: 没有合适的默认构造函数可用
在头文件中声明类时一定要实例化吗?
...全文
257
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++两个类相互引用的一点思考
昨天跟朋友讨论了一下在C++
中
如果出现两个类相互引用的情况,编译无法通过的问题如何解决: // A.h #ifndef A_H #define A_H #include "B.h" class A { B b; }; #endif A_H // B.h #ifndef B_H #define B_H #include "B.h" class B { A a
C++学习之
头文件
与类的
声明
(侯捷老师)
2、标准的
头文件
写法(防御式
声明
):在写
头文件
的时候,下面的写法较为标准,即需要表示该内容如果没有被编译的话那么才进行下面的函数体,否则不会对下面的内容进行编译,按照老师的讲法,这样避免了多次引用该文件,而对相同的内容进行多次编译的情况,程序会报错。1、C++代码的基本形式如下,需要一个.h文件来进行类的
声明
,之后通过.cpp文件进行具体的操作,同时可能会使用到标准库的东西,因此经常也会对标准库进行引入。
template模板及模板类的
实例化
模板template 通常,当我们调用一个函数时,编译器只需要掌握函数的
声明
。 类似的,当我们使用一个类类型的对象时,类定义必须是可用的,但成员函数的定义不必已经出现。 因此我们将类定义和函数
声明
放在
头文件
中
,而普通函数和类的成员函数的定义放在源文件
中
。 模板则不同: 为了生成一个
实例化
版本,编译器需要掌握函数模板或类模板成员函数的定义。因此,与非模板
C++类学习时出现的小问题
在学习C++
类时
,我自己写了一个Person类,这个类的
声明
与实现分开,
声明
放在Person.h文件
中
,实现放在Person.cpp
中
,代码如下。报错
中
说没定义对应的函数,但是我在
头文件
中
都定义了,后面我在main.cpp
中
修改了包含的
头文件
即可。在main函数
中
实例化
Person类。因为函数的实现都在cpp
中
。
实例理解c++
中
向前
声明
与引用
头文件
的区别
使用C++编程,编译时经常出现这种错误"error: invalid use of incomplete type ‘class xxx’",或“error: forward declaration of ‘class xxx’”. 解决这种错误就是用理解c++
中
向前
声明
与引用
头文件
的区别。 使用方式一: class B; class A{ public: B b; }; class B{ p...
工具平台和程序库
24,850
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章