我在Qt 5中无法掌握新的信号/槽语法(使用指向成员函数的指针),如新信号槽语法中所述.我尝试改变这个:
QObject::connect(spinBox, SIGNAL(valueChanged(int)),
slider, SLOT(setValue(int));
Run Code Online (Sandbox Code Playgroud)
对此:
QObject::connect(spinBox, &QSpinBox::valueChanged,
slider, &QSlider::setValue);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试编译它时出错:
错误:没有匹配的函数用于调用
QObject::connect(QSpinBox*&, <unresolved overloaded function type>, QSlider*&, void (QAbstractSlider::*)(int))
我曾经尝试过在Linux上使用clang和gcc -std=c++11.
我做错了什么,我该如何解决?
我正在使用函数指针与std :: function, 并遇到了以下问题.
让我们考虑下面的代码:
#include <cmath>
#include <functional>
// g++ -std=c++17 SF.C -o SF
// clang++ -std=c++17 SF.C -o SF
int main()
{
typedef double (*TpFunctionPointer)(double) ;
TpFunctionPointer pf1 = sin; // o.k.
TpFunctionPointer pf2 = std::sin; // o.k
TpFunctionPointer pf3 = std::riemann_zeta; // o.k
std::function< double(double) > sf1( sin ); // o.k
std::function< double(double) > sf2( std::sin ); // fails
std::function< double(double) > sf3( std::riemann_zeta ); // fails
}
Run Code Online (Sandbox Code Playgroud)
用函数指针pf1,pf2,pf3和sf1 编译g++ v8.2或clang …