Я только что застрял со следующей ошибкой компилятора 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;
};
Странно также то, что когда я перекомпилирую (make clean; make) код, я получаю сообщение об ошибке. Если я добавлю пробел "" в вызывающем коде (main.cpp) - впоследствии компиляция будет успешной - и я понятия не имею, почему ...
Большое спасибо,
Charly
PS: я использую gcc 4.4.5 с Debian Squeeze, создателем qt в качестве IDE с qt 4.6 - но эта проблема не зависит от Qt.