Vs2013 类派生+默认值+参数数组,默认值设置不当导致IDE奔溃或编译错误:-1073740791
2014-12-09 14:34
429 查看
VS2013开发时,如果遇到类似以下的代码,会导致IDE意外奔溃。
上述代码中,关键问题在于:
1.虚函数要求一个参数数组,并且参数数组前的参数仍有默认值。
2.派生此类,实现此虚函数时,函数的默认值遗漏。
3.如果没有其他函数调用次函数,则一切OK。
4.如果在代码中调用了此函数,会在调用语句输入时,IDE意外奔溃。
5.如果以外部编辑器编辑此代码来调用此函数,则在变异此代码时,发生““Csc.exe”已退出,代码为 -1073740791。”的错误。
解决方式:
此错误比较隐蔽,编译时也没有针对性报错,因此很难查出问题所在。实践上需要保证基类的虚函数与派生类的实现函数的参数表完全一致,包括默认值。
internal class Program { private static void Main(string[] args) { } } internal abstract class baseClass { protected abstract int add(int a, int b = 0, params int[] additionParam); } partial class delivedClass : baseClass { protected override int add(int a, int b, params int[] additionParam) { int s = a + b; foreach (var x in additionParam) s += x; return s; } int add2(int x) { return this.add(a); } }
上述代码中,关键问题在于:
1.虚函数要求一个参数数组,并且参数数组前的参数仍有默认值。
2.派生此类,实现此虚函数时,函数的默认值遗漏。
3.如果没有其他函数调用次函数,则一切OK。
4.如果在代码中调用了此函数,会在调用语句输入时,IDE意外奔溃。
5.如果以外部编辑器编辑此代码来调用此函数,则在变异此代码时,发生““Csc.exe”已退出,代码为 -1073740791。”的错误。
解决方式:
此错误比较隐蔽,编译时也没有针对性报错,因此很难查出问题所在。实践上需要保证基类的虚函数与派生类的实现函数的参数表完全一致,包括默认值。
相关文章推荐
- 給js函数参数设置默认值导致了在ios8,9手机上的神奇错误
- VS2013 + QT5.7.0静态编译 错误 .NMAKE:fatal error U1077. return code 0x2,使用 类 模板 需要 模板 参数列表
- vs2013 c++代码内出现中文导致编译错误
- 可选的Int参数在CPP目标上导致的编译错误
- Linux下内核参数设置不当导致建库内存溢出
- 常见编译错误---参数设置
- VS2013 编译程序时报无法加载PDB文件错误解决方案
- duilib编译错误解决方法整理 (含VS2013)
- vs 2008的工程编译的manifest文件导致程序无法运行,通过设置 /MANIFESTDEPENDENCY (Specify Manifest Dependencies) 解决
- VS2013 编译程序时报无法加载PDB文件错误解决方案
- 在vs2013下出现编译错误:“buiding an mfc project for an non-unicode”
- VS2013 编译VC6.0等比较老版本的MFC工程字符集错误问题的解决方法
- 15、VS2013编写程序时scanf出现的编译错误
- BIOS参数设置不当导致的问题
- vs2013编译的程序在其他机器上运行的环境设置
- 在创建MFC项目时,如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如我今天遇到的:
- vs2013编译opencv2.4.7错误解决办法
- vs2013无法编译c/c++ 错误 TRK0002: 未能执行命令cl.exe 存储控制块地址无效
- Oracle数据库案例整理-登录Oracle数据库失败-Oracle初始化参数设置错误导致普通用户授予sysdba权限登录失败
- VS编译错误:“到内置类型的函数样式转换只能接受一个参数”解决方案