问题
Qt: error :c2440 “初始化”:无法从“QLineEdit *”转换为“QLineEdit” class“QLineEdit”的构造函数声明为“explicit”
原因
错误代码:
QLineEdit input = new QLineEdit; //我只是想拥有一个输入框
input.setEchoMode(QLineEdit::Password);
QLineEdit 对象初始化的时候类型对不上造成的
既然你想要带星星的我就给你带个星星。
解决
修改后:
QLineEdit *input = new QLineEdit;
input->setEchoMode(QLineEdit::Password);
至于
class“QLineEdit”的构造函数声明为“explicit”
了解到 explicit :
- 意思是明显的
- 是C++中的一个关键字。
- 为了避免写代码过程中不经意间隐式的类型转换而诞生。
explicit使用注意事项:
* explicit 关键字只能用于类内部的构造函数声明上。
* explicit 关键字作用于单个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),如Circle(int x, int y = 0) 。
* 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。