C++ 一个引起C2512错的原因
2014-02-25 15:05
211 查看
一个比较基本的错误。
当主类(类A)含有其他类(类B)的对象(注意是对象),且未定义构造参数的时候,
运行开始时调用了类A编译器自动给的默认构造函数,该构造函数会自动调用类A里的所有成员的默认构造函数,此时若类B无默认构造函数(比如当只定义了带参数的构造函数时,编译器为保证构造函数的唯一性使得对象使用起来安全,是不会有自动给的隐藏的默认构造函数的),
则会报错C2512,并误给出类A的默认构造函数缺失的信息。
此时可使用指向类B的一个指针来解决此问题。
由于此时编译运行时A类不会构造类B的,便不会出此问题。
在之后的代码中,当要真正创建这个对象的时候,再使用自定义的带参数的构造函数进行初始化即可。
当主类(类A)含有其他类(类B)的对象(注意是对象),且未定义构造参数的时候,
运行开始时调用了类A编译器自动给的默认构造函数,该构造函数会自动调用类A里的所有成员的默认构造函数,此时若类B无默认构造函数(比如当只定义了带参数的构造函数时,编译器为保证构造函数的唯一性使得对象使用起来安全,是不会有自动给的隐藏的默认构造函数的),
则会报错C2512,并误给出类A的默认构造函数缺失的信息。
此时可使用指向类B的一个指针来解决此问题。
由于此时编译运行时A类不会构造类B的,便不会出此问题。
在之后的代码中,当要真正创建这个对象的时候,再使用自定义的带参数的构造函数进行初始化即可。
相关文章推荐
- c++设计一个不能被继承的类,为什么必须是虚继承?原因分析
- 在使用ajax过程中,引起Sys未定义的脚本错误的一个原因
- VC下 Runtime 版本不同原因引起的一个编译问题案例
- c++设计一个不能被继承的类,为什么必须是虚继承?原因分析
- symbian c++开发中模拟器引起的问题及其原因
- C/C++一个容易犯的低级错误--分号引起的错误
- C++ 模板放置在 .h 文件中的一个原因
- (二)一个工作任务引起的乱战——C++程序编译为dll,让C#调用
- 内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)
- 一个很难想到的引起ORA-12154的原因
- c++设计一个不能被继承的类,为什么必须是虚继承?原因分析
- 一个引起service为空的原因
- 今日工作心得:能够引起FileUpload控件的PostedFile总是为null的一个原因
- 内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)
- C++与蓝图结合编辑器崩溃的一个原因
- 一个很难想到的引起ORA-12154的原因
- 一个想不到的原因引起的Thinkphp表单令牌验证出错
- C++之一个编程入门者的感悟(能引起你的共鸣,是我最值得的事)
- 内存不足引起的SIGKILL:一个缓冲区不断增长问题的定位与解决(解释SIGKILL原因)
- 在桌面上用鼠标点击一个图标,结果附近若干个图标都被选中的原因?