gpt4 book ai didi

c++ - 前向声明不完整类型,递归

转载 作者:行者123 更新时间:2023-11-27 23:56:58 25 4
gpt4 key购买 nike

<分区>

我有两个类 Observer 和 Subject 以及 ObserverA、ObserverB,它们正在扩展 Observer(用于实现 Observer DP)。

在 Subject 中,我有一个指向 Observer 类的指针 vector :

class Subject {
std::vector<Observer*> obs;
int state;
public:
Subject(): state(0) {}

void notifyAll() {
for(std::vector<Observer*>::iterator it = obs.begin(); it != obs.end(); it++)
{
(*it)->update();
}
}
}

...
};

在观察者中,我也有一个主题:

class Observer {
protected:
Subject subj;
public:
virtual void update() {};
};

ObserverA,ObserverB 相似:

class ObserverA: public Observer {
public:
ObserverA(Subject s) {
subj = s;
s.attach(this);
}

virtual void update() {
std::cout << "Update A, state subj: " << subj.getState() << std::endl;
}
};

在声明类 Subject 之前,我添加了类 Observer 的前向声明。但是我遇到了编译错误:

Observer.h: In member function ‘void Subject::notifyAll()’:
Observer.h:27:17: error: invalid use of incomplete type ‘class Observer’
(*it)->update();
^
Observer.h:7:7: error: forward declaration of ‘class Observer’
class Observer;
^

我有一个指向 Observer 的指针 vector ,在 Subject 类中,我转发声明了 Obsever 类并且 Observer 类知道 Subect,为什么我仍然有错误?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com