ラムダ関数のコンパイル中に問題に直面しました:
... (int level = 3) ...
QString str = [level] {QString s;for(int i=0;i++<level;s.append(" "));return s;};
エラーの内容:
error: conversion from 'GainStatistic::getWidgetAndProps(QObject*, int)::<lambda()>' to non-scalar type 'QString' requested
私はこの変種を試しました:
... (int level = 3) ...
QString str ([level] {QString s;for(int i=0;i++<level;s.append(" "));return s;});
error: no matching function for call to 'QString::QString(GainStatistic::getWidgetAndProps(QObject*, int)::<lambda()>)'
しかし、関数内のラムダ式は単に何らかの型の値ですか? そうですか?したがって、コンストラクターをQString(lambda-that-returns-QString)
呼び出す必要があり、これが機能する必要があります。QString::QString(const QString& ref)
... (int level = 3) ...
QString str([level] {const QString& ref = "123";return ref;}); //leads to the same error
別のバリアント:
QString str = [level]->QString {QString s;for(int i=0;i++<level;s.append(" "));return s;};
error: expected token ';' got 'str'
MinGW 4.6.1