我有以下代码,有一个由“Eyebrow”类组成的“Face”类。面部表情可以更改为允许的公共枚举之一,从而控制每个组成部分的更改方式。每个组成类都应该负责响应更改的表达式,这就是为什么我想将它传递给每个组成部分。
脸.h:
#include "eyebrow.h"
class Face {
public:
enum Expression {NEUTRAL, JOY, ANGER};
void setExpression(Expression);
private:
Eyebrow left_eyebrow;
}
脸.cpp:
#include "face.h"
#include "eyebrow.h"
void Face::setExpression(Expression e) {
left_eyebrow.setExpression(e);
}
眉毛.h:
#include "face.h"
class Eyebrow {
public:
void setExpression(Face::Expression);
};
代码正在用 Cmake 编译:
add_executable(Main main.cpp face.cpp eyebrow.cpp)
我收到以下编译器错误:没有在brown.h 的void setExpression(Face::Expression_e) 中声明'Face'。
然后我转发声明的 Face(见下文)并得到编译器错误:'Face::Expression' has not been declared in void setExpression(Face::Expression); 在眉毛.h
brown.h(带有前向声明):
#include "face.h"
class Face;
class Eyebrow {
public:
void setExpression(Face::Expression);
};
有什么推荐的解决方法,朋友们应该用吗?