这是C和C++之间边界层上的一行函数。该函数获得一堆void*
并将它们转换为它们应该的类型。发现错误:为什么我能够默认构造一个没有默认构造函数的对象?
MDLPeriph periph_dline = *static_cast<MDLPeriph*>(dline_periph);
确实,periph_dline应该是一个参考。令我感到困惑的是这段代码编译时没有警告。此外,检查此代码时,gdb
报告Internal GDB error.
并崩溃。
据我所知,上面的代码默认构造一个MDLPeriph对象。然后是使用新对象的拷贝构造函数从右侧分配值。
但MDLPeriph没有默认的构造函数!这怎么可能?
平台和工具:
Windown 7
yagarto的此版本使用以下版本:的binutils:2.23.1 GCC:4.7.2 newlib:1.20.0 GDB:7.5。 1
(2012年12月22日,MIFI)OpenOCD的o.7.0
这是一个直接复制结构。没有默认的建设。 @Andreas不,类可以没有默认的构造函数。只有当类没有任何用户声明的构造函数时,才默认构造函数被隐式声明。 – 2014-09-25 13:40:09
@Andreas:不,一个类不一定有默认的构造函数。例如查看您链接到的问题的答案。 – sth 2014-09-25 13:42:20
哦,该死的,是的,错过了当有**任何其他构造函数可用时,将不会生成默认构造函数...... – 2014-09-25 13:44:53