为什么我不能使用智能指针创建新的QLineEdit类

时间:2019-05-22 14:17:44

标签: c++ qt5 smart-pointers

正如标题所示,我想通过智能指针为QLineEdit类使用一些缓冲区,但是编译器显示“'sizeof'的应用程序对不完整的'QLineEdit'类型的应用程序”。我通过建立消息找到了“ aligned_buffer.h”文件。但这是无奈的。我感到困惑的是,当我使用相同的方法为QTextEdit使用某些缓冲区时,编译器成功了。为什么QLineEdit无法使用相同的方法来做到这一点?

...
shared_ptr<QTextEdit> t1 = make_shared<QTextEdit>(); // successd
shared_ptr<QLineEdit> t2 = make_shared<QLineEdit>(); // failed
...

1 个答案:

答案 0 :(得分:0)

正确包含头文件

#include <QTextEdit> // https://doc.qt.io/qt-5/qlineedit.html
#include <QLineEdit> // https://doc.qt.io/qt-5/qtextedit.html
#include <memory>     //https://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared

int main(){
   shared_ptr<QTextEdit> t1 = std::make_shared<QTextEdit>(); 
   shared_ptr<QLineEdit> t2 = std::make_shared<QLineEdit>(); 
}