Hi,
I think I've found a bug in the doxygen parser relating to inner classes,
but aren't entirely sure. The following code fails to document correctly:
#define API_SPEC
// Outer class
class API_SPEC A
{
public:
A();
~A();
// Forward declaration
class B;
};
// Inner class
class API_SPEC A::B
{
public:
B();
~B();
};
/*! \class A
*
* Documentation for outer class A.
*/
/*! \brief Constructor.
*
* Constructor for outer class A.
*/
A::A() { return; }
/*! \brief Destructor.
*
* Destructor for outer class A.
*/
A::~A() { return; }
/*! \class A::B
*
* Documentation for inner class A::B.
*/
/*! \brief Constructor.
*
* Constructor for inner class A::B.
*/
A::B::B() { return; }
/*! \brief Destructor.
*
* Destructor for inner class A::B.
*/
A::B::~B() { return; }
This elicits the following warnings:
example.cc:43: Warning: no matching class member found for
A::B::B()
example.cc:48: Warning: no matching class member found for
A::B::~B()
example.cc:17: Warning: Member B of class A is not documented.
example.cc:18: Warning: Member ~B of class A is not documented.
It would appear that my use of the API_SPEC (which under Windows is often
#define'd to be __declspec(export)) confuses the parser somehow. It works
fine with the outer class, but the inner class fails to document unless I
remove the use of the API_SPEC define when declaring the class.
If anyone could shed some light on this issue (and a fix or workaround) it
would be much appreciated.
Cheers,
- Andrew
|