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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

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 []。

 

 

 

 

VS2019 C++项目同时出现LNK2005 LNK1169 error 的解决办法 同时出现LNK2005 LNK1169 error 的解决办法项目场景:问题描述:原因分析:cpp引用cpp导致报错解决方案:问题总结 项目场景: Visual Studio 的C++ 项目中,在main.cpp中引入LinkStack.cpp时会出现以下报错: 问题描述: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK1169 找到一个或多个多重定义的符号 queue2 F:\Cplusplus\queue2\Debug\queue2.exe 1 警告 C6011 取消对 NULL 指 阅读详情

相关推荐

C:VS:error:C2614:非法成员初始化,xx不是基或成员

非法成员初始化,xx不是基或成员;自己的感觉是这个翻译不是很顺滑。起码得翻译成基类,而不是基。这个错误的产生是一个意识问题,就是说。对于刚入门的人来说,继承来的成员,也是自身成员,应该可以直接在子类的构造函数的初始化列表使用。但其实如果细想一想,会发现,如果子类可以初始化父类里的成员的话,可能会有些问题。父类里的成员需要使用父类构造函数初始化。像这种基础的问题,需要系统的学,记。不知道GCC版的中文会如何显示;

mzhan017的博客 1655

c/c++ error C2614: illegal member initialization: is not a base or member

这个错误是因为在初始化列表中初始化了非成员函数或者非基类错误示例:class A { protected: int size; } class B: public A { B(const A& a): ok(0), size(a) { // error, 因为初始化了 size // size 是 a的成员函数,虽然被B所继承,但是仍然不能在初始化列表中初始化。 } priva

帐前卒 专栏 7873

C++工程编译链接错误汇总VisualStudio

适用情况: 1. 查看 工程属性--- VC++目录----执行目录---是否有 C:\Program Files (x86)\Windows Kits\8.1\bin\x86 (应该是执行的这个目录下的 rc.exe) 2. 查看 目录 C:\Program Files (x86)\Windows Kits下是否没有【8.1】,或者【8.1】下的文件夹是否不全(对比【8.0】...

u012138730的专栏 7619

C++ VS C#(10):构造函数与析构函数

C++C#在构造函数与析构函数中的区别

norains的专栏 3185

VS2005编译之declared deprecated警告

<br /><br />在VS2005编译代码,有时会遇到类似如下的警告: warning C4996: 'strcat' was declared deprecated. 通常这类警告都是由于调用了字符串相关函数引起的。虽然这警告无伤大雅,仅仅只是说使用的函数已过时(deprecated)<需要用新的函数来替代>,但看着实在别扭,且看看ms为什么要设置成这样。<br /> <br />    搜索了一下ms的网站,找到了结果。ms认为以前的c/c++库中有一部分函数不够安全,希望程序员可以使用他们的替代

tidavery的专栏 1944

VS消除警告VS消除特定警告/安全函数警告C4996 strncpy unsafe……

1、安全函数警告消除: 编译中出现 This function or variable may be unsafe. 消除方法: 1、在文件开头添加:#define _CRT_SECURE_NO_WARNINGS (试过,不行) 2、在项目-&gt;属性-&gt;C/C++-&gt;预处理器-&gt;预处理器定义中添加_CRT_SECURE_NO_WARNINGS 2、忽略警告 ...

我的笔记本 1万+

去掉VS2005警告提示

原文地址:http://gamedev.cuit.edu.cn/show.aspx?id=815&cid=80 将过去的工程用VS2005打开的时候。你有可能会遇到一大堆的警告:warning C4996。 比如:warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf

HEVC_CJL的专栏 1978

关于使用VS2005编译时出现的错误

>D:\DevelopPlatform\Microsoft Visual Studio 8\VC\include\iosfwd(34) : error C2146: 语法错误 : 缺少“;”(在标识符“fpos_t”的前面) 1>D:\DevelopPlatform\Microsoft Visual Studio 8\VC\include\iosfwd(34) : error C4430: 缺少

2777

遇到的C++代码警告错误

一. 警告 warning C4018: “<”: 有符号/无符号不匹配 原因: 在for循环中默认vecScanData.size()时unsigned int类型,而 i常常写成int类型,改成size_t(计算数组大小或索引)就行。 warning C4005: "XXX"宏重定义 解决: 宏定义要在 #include<windows.h> 之前。 warning C4244:"=": 从"double"转到"int"可能丢失数据。 编译器例行警告。如果对精

初心不改 7192

VS2005设置WDK编译环境

<br />1:首先安装好WDK,然后进入"开始"->"所有程序"->"Windows Driver Kits"->"WDK XXXX.XXXX.X" ->"Windows XP"->"x86 Checked Build Environment"在弹出来的命令行窗口中输入"Build",让它自动生成所需要的库,等待它执行完2:打开VS2005,在菜单上选择"工具"->"选项"弹出"选项"窗口,选择"项目解决方案"->"VC++目录","显示以下内容的目录"<br />  "可执行文件"中添加<br /> 

gaowenboms的专栏 3307

VS2005中检测更正 C/C++ 代码缺陷

VS2005中提供的检测方法: 1 IDE(集成开发环境)集成2 #pragma 支持 3 批注支持4 作为签入策略的一部分运行分析工具 5 Team System 与 Team Build 的集成6 命令行支持一 代码分析工具用于检测常见的编码错误,例如缓冲区溢出、内存未初始化、空指针取消引用,以及内存资源泄露。 为 C/C++ 代码启用代码分析在 Visual Studio 中打开一

Mobidogs Blog 2163

VS2005编译was declared deprecated警告

VS2005编译代码,有时会遇到类似如下的警告: warning C4996: strcat was declared deprecated. 通常这类警告都是由于调用了字符串相关函数引起的。虽然这警告无伤大雅,仅仅只是说使用的函数已过时(deprecated)需要用新的函数来替代>,但看着实在别扭,且看看ms为什么要设置成这样。     搜索了一下ms的网站,找到了结果。ms认为以前

qiuzhuoxian的专栏 914

CxImage6.0在VS2005编译

CxImage下载地址:http://www.codeproject.com/Articles/1300/CxImage 没有ID的直接注册一下就可以下载,免费的。 解压后,用VS2005打开 CxImgLib.dsw 分别在DebugRelease下编辑,然后把编辑产生的lib文件copy 到一个文件夹下,我的是文件夹是D:\softwares\CxImage\lib\debgu:D:

irene1216的专栏 905

使用VS2005编译安装openssl1.1.1c

1.首先获取openssl源码包 openssl-1.1.1c.tar.gz; 2.安装 ActivePerl; 2.解压源码包,打开vs2005命令行工具,通过命令行进入openssl源码包根目录; 3.查看源代码目录下面的INSTALL文件,如果要编译静态库,则根据文件中的提示依次向命令行输入 $ perl Configure VC-WIN32 no-shared no-asm no-tests -D_WIN32_WINNT=0x0501 --prefix=c:\openssl ...

cnmeimei的博客 271

VS2005错误设置目录引起的错误

正在编译...dllentry.cppC:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include/winnt.h(222) : error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/

skyair624的专栏 2639

成功将log4cpp升级到了vs2005版本,总结下编译时报错及相应的解决方法

目前可供下载的log4cpp源代码只提供了支持使用vc6编译方式,在将此版本的程序升级到2005的过程中会产生一些错误,下面将这些错误的解决方式中介如下。     1、在使用vs2005打开log4cpp工程时,会有类似于“需要将工程转化到2005solution”的警告窗口弹出,点击yes后,在接下来打开solution的过程中会有某些project无法加载的错误窗口弹出,直接

soartomato的专栏 1124
上一篇: C 结构整体赋值给数组
下一篇: 关于MFC中CMemoryState的一些使用
ccing
博客等级 码龄19年 11粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值