2011-07-24 21 views
4

次のコード断片は、QT 4.7.3 とコンパイルエラー call of overloaded ‘QString(int)’ is ambiguous(システムは、Linuxの64ビット、不安定Debianの)オーバーロード「QStringの(INT)は」曖昧

struct QSAConnection 
{ 
    QSAConnection() : sender(0), signal(0), function_ref() { } 
    QSAConnection(QObject *send, const char *sig, QSObject ref) 
    : sender(send), signal(QLatin1String(sig)), function_ref(ref) { } 
    QObject *sender; 
    QString signal; 
    QSObject function_ref; 
}; 

任意のヒントを与えているのですか?

答えて

5

該当ビットがこのラインである:signalQStringあるので

QSAConnection() : sender(0), signal(0), function_ref() { } 

signal(0)ビットは、唯一のパラメータとしての整数をとるQStringクラスにコンストラクタを呼び出すようにしようとしています。 QStringには、Qtのドキュメントによるそのようなコンストラクタはありません。ただし、コンストラクタはcharQCharの暗黙の変換をintから取得しています。私はそれらの2つの間で曖昧だと思います。

代わりにこれを意味しましたか?

QSAConnection() : sender(0), signal(), function_ref() { } 

これはデフォルトでsignalの初期化を行います。技術的には、その場合はイニシャライザのリストにすべてを含める必要はありません。

+0

+1:絶対に正しい。良い説明と良いアドバイス。 –

0

いいですね。曖昧でない場合は、QString::QString(char const* src)のヌルポインター例外が発生する可能性があります。これはよくある間違いですstd::string

関連する問題