【发布时间】:2013-05-25 21:06:57
【问题描述】:
假设有两个类,它们相互需要:container 和 item。 container 类创建了item 类的实例。 item 类的每个实例都持有一个container 类的实例,只需要调用container 类的method_call_by_item 方法即可. container 类需要查看 item 类的所有字段。
问题是前向声明:我想在 item.h 内部有一个前向声明,以便类 item 可以有一个 container 作为字段并调用方法method_call_by_item。我该怎么做?
类容器,创建项目。
// container.h
#ifndef CONTAINER_H
#define CONTAINER_H
#include "item.h"
class container{
public:
item * create_item();
void method_called_by_item(item * i);
};
#endif //CONTAINER_H
实现:
// container.cpp
#include "container.h"
item * container::create_item(){
return new item(this);
}
void container::method_called_by_item(item * i){
// do stuff with item
}
类item,需要调用容器的一种方法:
// item.h
#ifndef ITEM_H
#define ITEM_H
#include <iostream>
class container;
class item{
public:
item(container * c);
void do_something();
container * c;
};
#endif //ITEM_H
实现:
// item.cpp
#include "item.h"
item::item(container * c){
this->c = c;
}
void item::do_something(){
this->c->method_called_by_item(this);
}
【问题讨论】: