【发布时间】:2023-03-16 22:59:01
【问题描述】:
我在学习观察者模式的教程时遇到了以下问题。
也就是说,我有以下基类:
class Subject;
class Observer;
接下来,我要再定义两个类
class StockGrabber: public Subject {
//...
//the constructor involves a StockObserver object
StockGrabber(StockObserver so){....};
}
class StockObserver: public Observer {
//...
StockObserver(StockGrabber sg) {....};
}
有什么方法可以使用前向声明,以便 StockGrabber 知道 StockObserver 存在吗?鉴于它们相互依存,我不能只是交换两个班级的位置。
我应该如何解决这个问题? (原教程是用 Java 编写的,但我正在尝试用 C++ 实现它)谢谢!
【问题讨论】:
-
Java 中的等效代码暗示引用语义,而您的 C++ 代码显示值语义。您可能希望更改为使用引用语义。要回答您的问题,需要离线定义其中一个函数体才能使用前向声明。
标签: c++ class forward-declaration