gpt4 book ai didi

c++ - 两个相互引用的类

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:38 28 4
gpt4 key购买 nike

假设有两个相互需要的类:containeritem。类 container 创建类 item 的实例。 item类的每个实例都持有一个container类的实例,只需要调用container类的方法method_called_by_item . container 类需要查看 item 类的所有字段。

问题是前向声明:我想在 item.h 中有一个前向声明,这样类 item 就可以有一个容器 作为字段并调用方法 method_called_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,需要调用container的一个方法:

// 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);
}

最佳答案

在container.h中

class item; // do not include the item.h

在 container.cpp 中

#include "item.h"

在item.h中

class container; // do not include container.h

在 item.cpp 中

#include "container.h"

关于c++ - 两个相互引用的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753889/

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