widget.cpp:22:12: No viable constructor or deduction guide for deduction of template arguments of 'QStack'
qstack.h:12:7: candidate template ignored: couldn't infer template argument 'T'
qstack.h:12:7: candidate function template not viable: requires 1 argument, but 0 were provided
Qt报错 QSTACK
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
根据你提供的错误信息,看起来你试图创建一个
QStack对象时遇到了问题。错误信息表明编译器无法推断模板参数T,并且在尝试创建QStack对象时没有提供所需的参数。QStack是 Qt 框架中的一个容器类,用于存储一系列的相似类型的元素。它的构造函数通常需要指定存储元素的类型。解决这个问题的方法取决于你的具体代码和你想要达到的目的。以下是一些可能的解决方案:
解决方案 1:明确指定模板参数类型
如果你在创建
QStack对象时没有指定模板参数类型,编译器就无法推断应该使用哪种类型。你可以尝试明确指定模板参数类型来解决这个问题。例如,如果你想要存储QWidget类型的对象,你可以这样做:QStack<QWidget> stack;解决方案 2:检查构造函数的参数
错误信息中提到构造函数需要 1 个参数,但没有提供。你需要检查你的代码,确保在创建
QStack对象时提供了正确的参数。例如:QStack<QWidget> stack(new QWidget()); // 这里创建了一个包含一个新 QWidget 的 QStack解决方案 3:检查你的代码逻辑
如果上述解决方案都不适用,你可能需要重新检查你的代码逻辑。确保你在正确的上下文中使用
QStack,并且了解你试图实现的功能。有时,代码逻辑错误可能导致类似的问题。代码示例
下面是一个使用
QStack的简单示例,展示了如何正确创建和使用QStack对象:#include <QApplication> #include <QStack> #include <QWidget> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QStack<QWidget*> stack; // 创建 QStack 对象,用于存储 QWidget* 类型的对象 stack.push(new QPushButton("Button 1")); // 添加一个按钮到栈中 stack.push(new QPushButton("Button 2")); // 再添加一个按钮到栈中 // ... 其他代码 ... return app.exec(); // 运行应用程序事件循环 }请根据你的具体情况调整代码。如果你能提供更多的代码上下文或详细描述你的需求,我可以提供更具体的帮助。
解决 无用评论 打赏 举报 编辑记录