class 中枚举的前向声明?
Forward Declaration of enum in a class ?
我有两个抽象 Class 彼此拥有另一个的指针。我需要在其中一个中使用另一个 Class 的枚举,例如示例。
AFoo 持有 ABar,ABar 需要一个指向 AFoo 的指针来更新一些数据,还需要一个使用 AFoo 枚举的成员函数。
我记得曾经遇到过这个问题,但没有遇到枚举问题,我最终做了内联声明。
我可以做一个嵌套 class,但有没有其他方法可以避免这种情况?
AFoo.hpp :
#include ...
class AFoo;
enum AFoo::poo; --> not possible
#include "ABar.hpp"
class AFoo {
public:
...
virtual void func() = O;
enum poo {
H,
I,
...
}
protected:
ABar *bar_;
};
ABar.hpp
#include ...
class Abar;
#include "AFoo.hpp"
class ABar {
public:
...
virtual AFoo::poo doing_some_stuff() = 0; --> Here is my problem (if i replace the return type with basic type i have no compilation problem)
protected:
AFoo *foo_;
};
在AFoo.hpp中,移除
enum AFoo::poo; --> not possible
并替换
#include "ABar.hpp"
和
class ABar;
此外,您的 enum
声明缺少一个分号。
在AFoo.hpp中,不包含ABar.hpp,只向前声明class:
class ABar;
此外,在 ABar.hpp 中,包括 AFoo.hpp,不要转发 ABar
或 AFoo
。
我有两个抽象 Class 彼此拥有另一个的指针。我需要在其中一个中使用另一个 Class 的枚举,例如示例。 AFoo 持有 ABar,ABar 需要一个指向 AFoo 的指针来更新一些数据,还需要一个使用 AFoo 枚举的成员函数。
我记得曾经遇到过这个问题,但没有遇到枚举问题,我最终做了内联声明。
我可以做一个嵌套 class,但有没有其他方法可以避免这种情况?
AFoo.hpp :
#include ...
class AFoo;
enum AFoo::poo; --> not possible
#include "ABar.hpp"
class AFoo {
public:
...
virtual void func() = O;
enum poo {
H,
I,
...
}
protected:
ABar *bar_;
};
ABar.hpp
#include ...
class Abar;
#include "AFoo.hpp"
class ABar {
public:
...
virtual AFoo::poo doing_some_stuff() = 0; --> Here is my problem (if i replace the return type with basic type i have no compilation problem)
protected:
AFoo *foo_;
};
在AFoo.hpp中,移除
enum AFoo::poo; --> not possible
并替换
#include "ABar.hpp"
和
class ABar;
此外,您的 enum
声明缺少一个分号。
在AFoo.hpp中,不包含ABar.hpp,只向前声明class:
class ABar;
此外,在 ABar.hpp 中,包括 AFoo.hpp,不要转发 ABar
或 AFoo
。