0

我正在尝试编译一个使用 C++ 语言的 Qt Project 组件编写的项目,我在“DetectAll”类之一中遵循声明,但编译器抱怨代码语法并完全停在 PointIndex() 处。

从该代码中,我了解到 PointIndex 是 Qt Project 固有的变量,并作为函数 DetectAll 的第二个参数传递。但是编译器还提到了对我没有意义的 QPair,你能帮我找出我在这里实际上做错了什么吗?

以下是原始代码和编译器错误

protected:
.....
bool detectAll(const QPointF& pos, PointIndex& result = PointIndex());

/////////////

D:\....\MAT\Skeleton_source\sswidget.h:87: error: could not convert 'QPair<int, int>()'
 from 'SSWidget::PointIndex {aka QPair<int, int>}' to 'SSWidget::PointIndex& {aka QPair<int, int>&}'
 bool detectAll(const QPointF& pos, PointIndex& result = PointIndex());
                                                                    ^
4

2 回答 2

1

改变

PointIndex& result = PointIndex()

PointIndex result = PointIndex()

在你的参数 decl. 或者删除默认值。您不能将非常量引用绑定到临时对象。

您正在为引用分配一个默认值,这是编译器抱怨的。此外,它似乎SSWidget::PointIndex是 typedefed 的,QPair<int, int>这就是你看到提到的原因。

相关的 SO 问题在这里

于 2013-10-28T11:54:47.280 回答
0

您收到的编译器错误与指针有关。你确定你应该在减速中包含 & 符号吗?

SSWidget::PointIndex 被实现为一个 QPair,带有一个模板。

于 2013-10-28T11:56:47.720 回答