gpt4 book ai didi

c++ - 解决循环依赖

转载 作者:行者123 更新时间:2023-12-01 14:47:18 27 4
gpt4 key购买 nike

我知道那里有几个循环依赖问题,但我无法解决这个问题。
我有两个类(class):ManagerManaged . Manager创建 Managed对象和 Managed基本上包含了几个 Manager方法,其中一些是模板化的。

// Manager.h
struct Manager {

Managed create(); // To be defined in the .cpp

template <typename T>
Managed create() {
Managed managed(this); // Access Managed constructor
managed.whatever<T>(); // Access templated function
managed.whateverElse();
return managed;
}
}

struct Managed {
explicit Managed(Manager* manager) : manager(manager) {}

template <typename T>
void whatever() {
manager->... // use the Manager pointer for whatever purpose
}

void whateverElse(); // To be defined in the .cpp

Manager* manager;
}
无论如何,它是一个静态库项目。
另外,真正的代码可以在 here中找到.
有没有办法解决这个问题?

最佳答案

我只是重新排序您的代码并使用了 PIMPL然后我构建了一个小例子:

#include <iostream>

struct Managed;
struct Manager;

struct Managed {
explicit Managed(Manager* manager) : manager(manager) {}

template <typename T>
void whatever() { }

void whateverElse(); // To be defined in the .cpp

Manager* manager;
};


struct Manager {

Managed create(); // To be defined in the .cpp

template <typename T>
Managed* create() {
Managed* m = new Managed(this);// Access Managed constructor
m->whatever<T>(); // Access templated function
m->whateverElse();
return m;
}
};
它可以这样编译。但无论如何应该更好地考虑这样的设计。

关于c++ - 解决循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63047141/

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