次のC++コンパイラエラーでスタックしました。
no matching function for call "EPTDerivedException::HandleClass( BaseClass& )"
candidates are: void EPTDerivedException::HandleClass( DerivedClass )
関数HandleClass(BaseClass)があるはずなので、これを説明することはできません。これは呼び出しコードです:
BaseClass oBase;
EPTDerivedException* pException2 = new EPTDerivedException;
pException2->HandleClass( oBase );
そしてこれはEPTDerivedExceptionのコードです:
class EPTDerivedException : public EPTException
{
public:
EPTDerivedException();
// generic function
void HandleClass( DerivedClass oClass ) { Q_UNUSED(oClass); }
};
そして基本クラスの場合:
class EPTException
{
public:
EPTException( QString strName );
// specialized function
void HandleClass( BaseClass oBase ) { Q_UNUSED(oBase); }
private:
QString m_strName;
};
奇妙なことに、コードを再コンパイル(クリーンアップ、メイクアップ)すると、エラーメッセージが表示されます。呼び出し元のコード(main.cpp)にスペース ""を追加すると(その後のコンパイルは成功します)、理由がわかりません...
どうもありがとう、
チャーリー
PS:私はDebianSqueezeでgcc4.4.5を使用していますが、qt4.6ではIDEとしてqt-creatorを使用していますが、この問題はQtとは無関係です。