0

我刚刚遇到以下 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 用作 qt 4.6 的 IDE——但这个问题与 Qt 无关。

4

1 回答 1

1

我不确定你为什么认为应该有一个EPTDerivedException::HandleClass( BaseClass oBase )功能。没有这样的声明。

也许您需要添加using EPTException::HandleClass;EPTDerivedException?

于 2010-10-20T09:47:46.093 回答