我刚刚遇到以下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)中添加一个空格“” - 之后的编译是成功的 - 我不知道为什么......
非常感谢,
查理
PS:我使用gcc 4.4.5和Debian Squeeze,qt-creator作为IDE使用qt 4.6 - 但这个问题与Qt无关。
答案 0 :(得分:1)
我不确定您认为应该有EPTDerivedException::HandleClass( BaseClass oBase )
功能的原因。没有这样的声明。
也许您需要将using EPTException::HandleClass;
添加到EPTDerivedException
?