VS2005 在编译C++时候遇到的错误和警告

来源:互联网 发布:手拉鸡专卖网淘宝付款 编辑:程序博客网 时间:2024/04/30 13:19

Effective C++ Third Edition, Scott Meyers 

Item 53: Pay attention to compiler warnings.

 

在编译的时候,随时出现一些warning,可能在程序的初期并没有什么影响,可能到程序后期对造成致命的影响,下面给出一些我在编写程序中遇到的warning.

 

error C2512: '[ClassName]' : no appropriate default constructor available

    错误:系统找不到默认的构造函数。

    原因说明:在类中没有[ClassName](void).

    解决方案,如果不想要被调用的话,放在protect或者private里面。如果是个基类的话,必须放在protect里。

 

error C2248: ''[ClassName]::'[ClassName]' : cannot access private member declared in class ''[ClassName]'

    错误:不能访问该类的默认构造函数。

    原因说明:改类的继承类无法访问的基类的默认构造函数。

    解决方案:把默认构造函数放在protect里。

 

error C2614: '[ClassName]' : illegal member initialization: 'm_Member' is not a base or member

    错误: m_Member 不是该类的成员。

    原因说明:在继承类里面不能对基类的变量进行提前初始化。

    解决方案:把该变量放在构造函数里面初始化。

 

warning C4172: returning address of local variable or temporary:

    错误:在一个函数中定义了一个数组char c[],但是返回值为指针c。

    原因说明:局部变量的生命周期已经结束,它的空间已经释放,返回它的地址是不安全的行为。返回后c会出现乱码。

    解决方案:把char c[],定义为 static char []。