编译器通过错误:尝试使用 std::p air 向量时没有匹配函数
compiler through error: no matching function when trying to use vector of std::pair
在此代码中,声明了std::pair
的typdef
,然后使用新的typdef进行了vector
。向量在构造函数初始化列表中初始化。尝试使用向量at(index)
函数时,编译器会抛出此错误:
/home/user/compositionwidget/compositionwidget.cpp:53: error: no matching function for call to ‘std::vector<std::pair<QPainter::CompositionMode, QString> >::at(<unresolved overloaded function type>)’
imagePainter.setCompositionMode(comp_pair_vector.at(index).first);
^
typedef std::pair< QPainter::CompositionMode, QString > comp_pair ;
class CompositionWidget : public QWidget
{
Q_OBJECT
public:
CompositionWidget(QWidget * parent = 0) ;
protected:
void paintEvent(QPaintEvent *event);
private:
QImage * dest_image, *src_image ;
std::vector <comp_pair> comp_pair_vector;
comp_pair curr_composition;
};
在组合小部件中.cpp文件:
CompositionWidget::CompositionWidget (QWidget *parent)
:QWidget (parent),
comp_pair_vector
{
comp_pair(QPainter::CompositionMode_Clear, "CompositionMode_Clear"),
comp_pair (QPainter::CompositionMode_ColorBurn , "CompositionMode_ColorBurn"),
comp_pair (QPainter::CompositionMode_ColorDodge , "CompositionMode_ColorDodge")
}
{
src_image = new QImage ("/home/user/compositionwidget/images/butterfly.gif") ;
}
void CompositionWidget::paintEvent(QPaintEvent * event)
{
qDebug() << "CompositionWidget::paintEvent()........" ;
QPainter imagePainter (this) ;
dest_image->scaled(size()) ;
imagePainter.drawPixmap(0,0, width(), height(),
QPixmap::fromImage(*dest_image));
src_image->scaled(size()) ;
imagePainter.setCompositionMode(comp_pair_vector.at(index).first);
imagePainter.drawPixmap(0,0, width(), height(),
QPixmap::fromImage(*src_image));
}
重命名变量。index
是包含的某些库中的函数。或者,您可以使用编译器选项执行某些操作,但它不那么健壮。
错误消息给出了完整的答案:您要求的是"std::vector<...>::at(<未解析的重载函数类型>)'未解析的重载函数类型>。所以,只要问图书馆提供的东西,你应该没事。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 计算排序向量的向量中唯一值的计数
- 矩阵向量乘法(cublasDgemv)返回零
- 一对向量构造函数:初始值设定项列表与显式构造
- 将结构向量排序为子组
- 编译器通过错误:尝试使用 std::p air 向量时没有匹配函数
- 可以使用 std::p air 保存三种数据类型的向量